C# একটি স্ট্যাটিক টাইপের ভাষা, অর্থাৎ কম্পাইল-টাইমেই প্রতিটি জিনিসের একটি টাইপ থাকে। কোনো নামে একটি মান বসানোকেই ভ্যারিয়েবল ডিফাইন করা বলা হয়। ভ্যারিয়েবল ডিফাইন করা যায় দুইভাবে: হয় স্পষ্টভাবে তার টাইপ উল্লেখ করে, নয়তো অ্যাসাইন করা মানের ভিত্তিতে C# কম্পাইলারকে তার টাইপ অনুমান করতে দিয়ে (একে টাইপ ইনফারেন্স বলা হয়)। তাই নিচের দুটি ভ্যারিয়েবল ডেফিনিশন আসলে একই:
int explicitVar = 10; // Explicitly typed
var implicitVar = 10; // Implicitly typed
ভ্যারিয়েবলের মান পরিবর্তন করা হয় = অপারেটরের মাধ্যমে। একবার ডিফাইন হয়ে গেলে ভ্যারিয়েবলের টাইপ আর কখনোই বদলানো যায় না।
var count = 1; // Assign initial value
count = 2; // Update to new value
// Compiler error when assigning different type
// count = false;
C# একটি অবজেক্ট-ওরিয়েন্টেড ভাষা এবং এতে সব ফাংশন একটি ক্লাসের ভেতরে ডিফাইন করতে হয়। ক্লাস ডিফাইন করতে class কিওয়ার্ডটি ব্যবহার করা হয়। new কিওয়ার্ড ব্যবহার করে অবজেক্ট (বা ইনস্ট্যান্স) তৈরি করা হয়।
class Calculator
{
// ...
}
var calculator = new Calculator();
ক্লাসের ভেতরের ফাংশনকে মেথড বলা হয়। প্রতিটি মেথডে শূন্য বা তার বেশি প্যারামিটার থাকতে পারে। সব প্যারামিটারের টাইপ স্পষ্টভাবে উল্লেখ করতে হয়, প্যারামিটারের ক্ষেত্রে কোনো টাইপ ইনফারেন্স নেই। একইভাবে রিটার্ন টাইপও স্পষ্টভাবে উল্লেখ করতে হয়। return কিওয়ার্ড ব্যবহার করে মেথড থেকে মান রিটার্ন করা হয়। অন্য ফাইলের কোড থেকে কোনো মেথড কল করার সুযোগ দিতে হলে public অ্যাকসেস মডিফায়ার যোগ করতে হয়।
class Calculator
{
public int Add(int x, int y)
{
return x + y;
}
}
ইনস্ট্যান্সের উপর ডট (.) সিনট্যাক্স ব্যবহার করে মেথড কল করা হয়, যেখানে কোন মেথড কল করতে হবে তার নাম দিতে হয় এবং মেথডের প্রতিটি প্যারামিটারের জন্য আর্গুমেন্ট পাঠাতে হয়। চাইলে আর্গুমেন্টে সংশ্লিষ্ট প্যারামিটারের নামও উল্লেখ করা যায়।
var calculator = new Calculator();
var sum_v1 = calculator.Add(1, 2);
var sum_v2 = calculator.Add(x: 1, y: 2);
C#-এ স্কোপ নির্ধারিত হয় { ও } অক্ষর দুটির মধ্যে।
C#-এ দুই ধরনের কমেন্ট লেখা যায়। এক লাইনের কমেন্টের আগে // বসে, আর একাধিক লাইনের কমেন্ট /* ও */-এর মাঝে লেখা হয়।
Lucian-এর প্রেমিকা বাড়ি ফিরছেন, অথচ Lucian তাদের বিবাহবার্ষিকীর রাতের খাবার এখনো রান্না করেননি!
এই অনুশীলনীতে, আপনি Lucian-কে তার প্রিয় রান্নার বই থেকে একটি অসাধারণ লাসানিয়া রান্না করতে সাহায্য করার জন্য কিছু কোড লিখবেন।
আপনার চারটি কাজ আছে, সবগুলোই লাসানিয়া রান্নায় ব্যয় হওয়া সময়ের সঙ্গে সম্পর্কিত।
Lasagna.ExpectedMinutesInOven() মেথডটি ডিফাইন করুন, যেটি কোনো প্যারামিটার নেয় না এবং লাসানিয়া ওভেনে কত মিনিট থাকা উচিত তা রিটার্ন করে। রান্নার বই অনুযায়ী, প্রত্যাশিত ওভেন-সময় মিনিটে ৪০:
var lasagna = new Lasagna();
lasagna.ExpectedMinutesInOven();
// => 40
Lasagna.RemainingMinutesInOven() মেথডটি ডিফাইন করুন, যেটি প্যারামিটার হিসেবে লাসানিয়া ওভেনে যত মিনিট ধরে আছে তা নেয় এবং আগের কাজের প্রত্যাশিত ওভেন-সময় মিনিটের ভিত্তিতে লাসানিয়াকে আরও কত মিনিট ওভেনে থাকতে হবে তা রিটার্ন করে।
var lasagna = new Lasagna();
lasagna.RemainingMinutesInOven(30);
// => 10
Lasagna.PreparationTimeInMinutes() মেথডটি ডিফাইন করুন, যেটি প্যারামিটার হিসেবে লাসানিয়ায় আপনি কতগুলো স্তর যোগ করেছেন তার সংখ্যা নেয় এবং প্রতিটি স্তর প্রস্তুত করতে আপনার ২ মিনিট লাগে ধরে নিয়ে লাসানিয়া প্রস্তুত করতে আপনি কত মিনিট ব্যয় করেছেন তা রিটার্ন করে।
var lasagna = new Lasagna();
lasagna.PreparationTimeInMinutes(2);
// => 4
Lasagna.ElapsedTimeInMinutes() মেথডটি ডিফাইন করুন, যেটি দুটি প্যারামিটার নেয়: প্রথম প্যারামিটারটি হলো লাসানিয়ায় আপনি যোগ করা স্তরের সংখ্যা, আর দ্বিতীয় প্যারামিটারটি হলো লাসানিয়া ওভেনে যত মিনিট ধরে আছে তার সংখ্যা। ফাংশনটি রিটার্ন করবে আপনি লাসানিয়া রান্না করতে কত মিনিট ব্যয় করেছেন, যা মিনিটে প্রস্তুতির সময় এবং এই মুহূর্তে লাসানিয়া ওভেনে যত মিনিট কাটিয়েছে তার যোগফল।
var lasagna = new Lasagna();
lasagna.ElapsedTimeInMinutes(3, 20);
// => 26
Exercism-এ সাইন আপ করুন, C# ট্র্যাকের 62টি কনসেপ্ট178টি অনুশীলনী আর সত্যিকারের মানুষের মেন্টরিং দিয়ে শিখুন ও দক্ষ হয়ে উঠুন, সম্পূর্ণ বিনামূল্যে।