C#-এ মেথড প্যারামিটারগুলো ডেটা পাস করার এবং রিসিভ করার মাধ্যম। মেথড সিগনেচারের অংশ হিসেবে প্যারামিটার লিস্ট ডিক্লেয়ার করা হয়।
মেথড সিন্ট্যাক্সের উপাদান
- Access Specifier — ভিজিবিলিটি (public, private, protected, internal)।
- Return Type — রিটার্ন টাইপ (void হলে কিছু রিটার্ন করে না)।
- Method Name — অনন্য আইডেন্টিফায়ার (কেস-সেনসিটিভ)।
- Parameter List — প্যারেনথেসিসের ভিতরে টাইপ, অর্ডার, সংখ্যা। অপশনাল।
- Method Body — লজিক বা ইন্সট্রাকশনগুলো।
প্যারামিটার টাইপ
| প্রকার | বর্ণনা |
|---|---|
| Value Parameter | ডিফল্ট। আর্গুমেন্টের কপি পাস হয় (by value)। |
| Reference Parameter (ref) | আর্গুমেন্টের রেফারেন্স পাস হয়; মেথডে পরিবর্তন করলে মূল ভ্যারিয়েবল পরিবর্তিত হয়। |
| Output Parameter (out) | ref-এর মতো, কিন্তু মেথডে এন্ট্রি করার আগে ইনিশিয়ালাইজড থাকতে হয় না; মেথডে অবশ্যই অ্যাসাইন করতে হয়। |
| Params Array | params কীওয়ার্ড দিয়ে ভেরিয়েবল সংখ্যক আর্গুমেন্ট গ্রহণ করে। |
| Optional Parameter | ডিফল্ট মান দিয়ে ডিক্লেয়ার করা হয়; কল করার সময় বাদ দেওয়া যায়। |
| Named Argument | কল করার সময় নাম দিয়ে আর্গুমেন্ট পাস করা (অর্ডার মেনে চলতে হয় না)। |
উদাহরণ: সিম্পল মেথড ও ভ্যালু প্যারামিটার
using System;
public class NumberManipulator {
public int FindMax(int num1, int num2) {
int result;
if (num1 > num2)
result = num1;
else
result = num2;
return result;
}
public static void Main(string[] args) {
int a = 500;
int b = 750;
int ret;
NumberManipulator n = new NumberManipulator();
ret = n.FindMax(a, b);
Console.WriteLine("Max value = " + ret);
}
}
আউটপুট
Max value = 750
আরও উদাহরণ: ref, out, params
using System;
public class ParamDemo {
// ref parameter
public void ModifyRef(ref int x) {
x = 20;
}
// out parameter
public void GetValues(out int a, out int b) {
a = 10;
b = 20;
}
// params array
public int Sum(params int[] numbers) {
int total = 0;
foreach(int n in numbers) total += n;
return total;
}
public static void Main() {
ParamDemo d = new ParamDemo();
int val = 5;
d.ModifyRef(ref val);
Console.WriteLine("After ModifyRef: " + val); // 20
int x, y;
d.GetValues(out x, out y);
Console.WriteLine("Out params: " + x + ", " + y); // 10, 20
Console.WriteLine("Sum: " + d.Sum(1, 2, 3, 4, 5)); // 15
Console.WriteLine("Sum array: " + d.Sum(new int[] {10, 20})); // 30
}
}
সারসংক্ষেপ
- ভ্যালু টাইপ (int, struct) ডিফল্টভাবে ভ্যালু পাস হয়; রেফারেন্স টাইপ (class, array) রেফারেন্স পাস হয়।
ref— ইনপুট/আউটপুট দুটোই।out— শুধু আউটপুট (মেথডে অ্যাসাইন করা বাধ্যতামূলক)।params— ভেরিয়েবল আর্গুমেন্ট লিস্ট।