কম্পিউটার টিউটোরিয়াল

C#-তে নেমড প্যারামিটার কী?

নেমড প্যারামিটার (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); // সব নেমড

রিফ্যাক্টরিং-এ উপকারিতা

মেথড সিগনেচার পরিবর্তন করলে (প্যারামিটার যোগ/বদল) নেমড প্যারামিটার ব্যবহার করলে কলিং কোড ব্রেক হয় না, কারণ নাম অনুযায়ী ম্যাপিং হয়।

  1. C#-এ ইনডেক্সার কী?

  2. C#-এ প্যারামিটার/প্যারাম অ্যারে কী?

  3. C#-এ নেমস্পেস (Namespaces) কী?

  4. C#-এ প্যারামিটার পাস করার বিভিন্ন পদ্ধতি কী কী?