নেমড প্যারামিটার (Named Parameters) আমাদের মেথড কল করার সময় প্যারামিটারের ক্রম মনে রাখার প্রয়োজন নেই। প্রতিটি আর্গুমেন্টকে প্যারামিটার নাম দিয়ে নির্দিষ্ট করা যায়।
সিনট্যাক্স
MethodName(parameterName: value);
সুবিধা
- প্যারামিটার যেকোনো ক্রমে দেওয়া যায়
- কোডের পঠনযোগ্যতা বাড়ে (প্রতিটি আর্গুমেন্ট কী বোঝায় সেটি স্পষ্ট)
- অপশনাল প্যারামিটার সহ সহজে কাজ করা যায়
উদাহরণ
using System;
namespace DemoApplication {
class Demo {
static void Main(string[] args) {
// সাধারণ কল (ক্রম মেনে চলতে হয়)
NamedParameterFunction("James", "Bond");
// নেমড প্যারামিটার (ক্রম মানেই নেই)
NamedParameterFunction(firstName: "Mark", lastName: "Wood");
NamedParameterFunction(lastName: "Federer", firstName: "Roger");
// মিক্সড: পজিশনাল + নেমড (নেমডগুলো অবশ্যই শেষে থাকতে হবে)
NamedParameterFunction("John", lastName: "Doe");
Console.ReadLine();
}
public static void NamedParameterFunction(string firstName, string lastName) {
Console.WriteLine($"FullName: {firstName} {lastName}");
}
}
}
আউটপুট:
FullName: James Bond FullName: Mark Wood FullName: Roger Federer FullName: John Doe
নিয়ম ও সীমাবদ্ধতা
- নেমড আর্গুমেন্টগুলো পজিশনাল আর্গামেন্টের পরে থাকতে হবে
- প্যারামিটার নাম মেথড ডেফিনিশনের সাথে মিলতে হবে
- কনস্ট্রাক্টর, ইন্ডেক্সার, ডেলিগেট কলেও ব্যবহার করা যায়
উদাহরণ: অপশনাল প্যারামিটারসহ
public void Config(string host, int port = 80, bool ssl = false) { }
Config("localhost"); // host="localhost", port=80, ssl=false
Config("localhost", 443); // host="localhost", port=443, ssl=false
Config("localhost", ssl: true); // host="localhost", port=80, ssl=true
Config("localhost", port: 8080, ssl: true); // সব নেমড
রিফ্যাক্টরিং-এ উপকারিতা
মেথড সিগনেচার পরিবর্তন করলে (প্যারামিটার যোগ/বদল) নেমড প্যারামিটার ব্যবহার করলে কলিং কোড ব্রেক হয় না, কারণ নাম অনুযায়ী ম্যাপিং হয়।