বিভিন্ন সময়ে
ফাংশনের রিটার্ন টাইপ void কি ওয়ার্ড
ব্যবহার করা হয়। এটা আসলে কি বুঝায়?
আমরা কোন variable declare করতে ডাটাটাইপ
ব্যবহার করি। আবার function এর return type বা function এর argument থাকলে তার টাইপ কি সেটা নির্দিষ্ট করে দেই। যেমনঃ
int a;
int add(int a,int b)
{
//Function
body
}
কিন্তু void বলতে বোঝায় "nothing"
or "no type" যেমনঃ
১। void *a
এখানে a হচ্ছে একটা pointer which
type is unknown.
২। void add(int a,int b)
এখানে function টা কোন value
return করবে না।
৩। int add(void)
এখানে function টার কোন argument ই নেই।
যদিও argument এর স্থানে void না দিলেও কাজ করবে। অর্থাৎ কোনকিছু না দেওয়া মানে সেখানে void আছে।
এককথায়ঃ
void যা কোন কিছু return করে না বা যার
কোন type নেই।
সাধারনত তিন ধরনের void এর ব্যাবহার দেখা
যায়,
১। int function(void) - যার কোন argument
নেই। এবং কোন কিছুই গ্রহন করে না।
২। void function() - যা কোন কিছুই return
করে না।
৩। void* data - পয়েন্টারের ক্ষেত্রে ইউজ
করলে বুঝায়, এর data unknown। এবং কোন reference value নেই।
Static Class বলতে কী বুঝ?
Static class ( যেমন, public static
class MyClass {....} ) এর ভিতরের সবকিছু যেমন, মেথড,
কনস্ট্রাক্টর, ভেরিয়েবলস সবই অবশ্যই স্ট্যাটিক হতে হবে। স্ট্যাটিক ক্লাসের কনস্ট্রাকটর বাই
ডিফল্ট পাব্লিক সুতারাং এর কন্সট্রাকটরকে পুনরায় এক্সেস মডিফাইয়ার Public বলা লাগবে না। static
MyClass(){…}
Static Class এর একটি মেথড যতবারই ইনভোকড বা কল হোক না কেন এর কনস্ট্রাকটর শুধুমাত্র একবারই এক্সিকিউটেড বা ফায়ার হয় ও ক্লাসটি অব্জেক্টের শুধু একটিমাত্র ইনস্ট্যান্সই তৈরি করে এবং বার
বার সেটিই ব্যবহার করে।
মূলকথা Static Class এর অবজেকটের একটিমাত্র
ইনস্ট্যান্স থাকে।
public static
void name() একটি মেথড (মেথডের নামের আগে রিটার্ন টাইপ void কিনা বলে দিতে হয় কিন্তু
constructor এর ক্ষেত্রে বলে দিতে হয় না। )
এই Static method ক্লাসের সাথে ডট দিয়ে মেইন এর ভিতরে কল করা হয়। কখনো ক্লাসের কোন ইন্সট্যান্স এর
নামের সাথে ডট দিয়ে Static method পাওয়া যায় না।
Explain
“static” keyword in C#?
“Static”
keyword can be used for declaring a static member. If the class is made static
then all the members of the class are also made static. If the variable is made
static then it will have a single instance and the value
change is updated in this instance.
Constructor কী?
কোন ক্লাসের Constructor একটি ফাংশন ছাড়া
কিছুই নয়। কিন্তু এর একটি বিশেষত্ব আছে। Constructor এর প্রধান বিশেষত্ব হল একে Call করা লাগে না। Object তৈরি হওয়ার সাথে সাথে এই ফাংশনে যতগুলো স্টেটমেন্ট থাকবে
সেগুলো অন্যান্য সাধারণ ফাংশনের মত Execute করতে থাকে এবং এটি একাধিক আর্গুমেন্ট নিতে পারে কিংবা নাও নিতে পারে, আরেকটি বৈশিষ্ট্য হল এটি কিছু Return করে না। তাহলে একনজরে Constructor এর বৈশিষ্ট্যগুলো হল:
a.
একে Call করা লাগে না, অবজেক্ট তৈরি হওয়ার সাথে সাথেই রান হয়
b.
এক বা একাধিক Argument থাকতে পারে কিংবা আর্গুমেন্ট নাও থাকতে পারে
c.
কোন কিছু Return করে না
d.
Constructor যেহেতু ফাংশন তাই
এই ফাংশনের নাম অবশ্যই সংশ্লিষ্ট ক্লাসের
নাম হতে হবে
Static ও Dynamic memory allocation এর মধ্যে পার্থক্য?
Static = compile time, Dynamic = runtime,
a.
Declared ভেরিয়েবলস এর
জন্য Static মেমরি এলোকেট হয় প্রোগ্রাম execution এর পূর্বে অর্থাৎ Compile এর সময়। কিন্তু Dynamic মেমরি এলকেট হয় প্রোগ্রামের Execution এর সময়
অর্থাৎ Run Time এ।
b.
Static শব্দের অর্থ
হলো ফিক্সড অর্থাৎ যখন মেমরির সাইজ static/constant/ফিক্সড হয় এবং সেই সাইজ সম্পর্কে কম্পাইল
টাইমেই জানা যায় তখন Static মেমরি এলোকেট
করা হয় আর ডায়ানামিক অর্থ পরিবর্তনশীল অর্থাৎ যখন মেমরি সাইজ
পরিবর্তনশীল এবং সেই সাইজ সম্পর্কে শুধুমাত্র রান টাইমেই জানা যায় তখন Dynamic মেমরি এলোকেট করা হয়। অতএব যদি প্রয়োজনীয় মেমরি সাইজ সম্পর্কে Advance জানা থাকে তাহলে স্ট্যাটিক মেমরি ইউজ করাই ভালো আর মেমরি সাইজ কতটুকু
লাগবে সেটা আগে থেকে না জানা থাকলে Dynamic মেমরি ইউজ করাই
বেস্ট।
c.
Static মেমরি এলোকেট হয় Stack এ যেখানে Dynamic মেমরি এলোকেট হয় Heap এ।
d. Static মেমরিতে
ভ্যারিয়েবলস বা ডাটা store হয় permanently কিন্তু Dynamic মেমরিতে Data store হয় অস্থায়ী শুধুমাত্র প্রোগ্রাম ইউনিট যখন এক্টিভ হয়।
e. Static মেমরি
ডায়ানামিকের চেয়ে দ্রুত Execution হয়। Dynamic মেমরিতে Static এর চেয়ে slow execution হয়।
IDE কী এবং এর
সাথে কম্পাইলারের পার্থক্য কী?
IDE (Integrated Development Environment) হচ্ছে এমন একটি
সফটওয়্যার, যেখানে কোড লিখা, কম্পাইল করা এবং এক্সিকিউট করা এ সকল সুবিধা বা এ সব কিছুর
মধ্যে এক বা একাধিক সুবিধা বা নির্দিষ্ট কিছু সুবিধা দিয়ে আমাদের কোড করাকে সহজ বা
দ্রুত করে তোলে, এ রকম সফটওয়্যারকে আমরা IDE বলি। যেমন, Visual Studio,
CodeBlocks ইত্যাদি।
কম্পাইলার :
কম্পাইলারের কাজ হচ্ছে খালি কম্পাইল করে যাওয়া অর্থাৎ টেক্সট কোডকে বাইনারি বা মেশিন কোডে রুপান্তর করা।
কম্পাইল না করলে কম্পিউটার প্রোগ্রাম রান করতে পারেনা ।
IDE: IDE তে কোড লিখার সময় কোড অটো
কম্পিলিটিশন, কোড সাজেশন ইত্যাদি দেয়া থাকে । কোড লিখাকে
সহজসাধ্য করতেই IDE। এছাড়া কোডে ভুল থাকলে IDE সেটা চিহ্নিত করে
দেয় এবং Debugging ও করতে পারে। কম্পাইলার সাধারনত IDE
এর একটা অংশ তবে IDE ছাড়াও কোড লিখে কম্পাইল
করা যায়। তবে IDE এর কাজ হলো বাড়তি কিছু সুবিধা প্রদান করা।
প্যারামিটার vs আরগুমেন্টঃ
function add( int a, int b) {};
add(10, 7);
উপরের int a, and int b; --- হলো argument,
এবং যখন আমি ফাংশন টা কল করে দুইটা ভ্যালু দিলাম যেমন 10, 7;
অই দুইটা হইলো পেরামিটার। পেরামিটার হলো ভ্যালু, আর আর্গুমেন্ট হলো ভেরিয়েবল
i++ ও ++i -এর মধ্যে পার্থক্য কী?
মূলত উভয় i এর মান ১ বাড়ায়।
i++ মানে i=i+1;
++i মানে i=i+1;
তাহলে
পার্থক্য কোথায়?
পার্থক্য
তখনই বোঝা যায় যখন কোন কিছুতে assign অথবা compare করা হয়। i++ মানে আগে বসাও পরে বাড়াও(post increment) ++i মানে আগে বাড়াও পরে বসাও(pre increment)
উদাহরণ
a=i++; মানে
a=i;//assign first
i=i+1;//increment latter
i=i+1;//increment latter
a=++i; মানে
i=i+1;//increment first
a=i;//assign latter
a=i;//assign latter
i++ =>postpaid,++i => prepaid
Use of var Keyword:
var keyword is
static typed. অর্থাৎ সব টাইপের সাথেই সে মানান সই। এর বিশেষ Facilities হলো:
a.
To avoid Long class Name and makes code readable
b.
To deal with LINQ and Anonymous data types
Note: When we use int data type it is called Explicitly
or Directly declare data type that means we are directly defining
the data type. But when we use var keyword data type it is called Implicitly
or Indirectly declare data type that means we are indirectly defining the
data type which easily adjusted with right side data type.
program related aro kichu post chai VAI....
ReplyDelete