آرگومان های نامگذاری شده در C#
در سیشارپ، Named Arguments یا آرگومانهای نامگذاری شده به شما این امکان را میدهد که در هنگام فراخوانی یک متد، پارامترها را به صورت
نامگذاری شده و بدون توجه به ترتیبشان در لیست پارامترها ارسال کنید. این ویژگی به خصوص زمانی مفید است که متد تعداد زیادی پارامتر دارد و ترتیب
آنها ممکن است پیچیده باشد، یا برخی از پارامترها مقدار پیشفرض دارند و شما قصد دارید تنها برخی از آنها را مقداردهی کنید.
در این روش، شما نام پارامتر را همراه با مقدار مورد نظر مشخص میکنید، که به صورت زیر استفاده میشود.
MethodName(parameterName: value);
فرض کنید یک متد با نام PrintPersonInfo داریم که اطلاعات یک شخص را چاپ میکند.
static void PrintPersonInfo(string firstName, string lastName, int age, string city)
{
Console.WriteLine($"Name: {firstName} {lastName}, Age: {age}, City: {city}");
}
static void Main(string[] args)
{
PrintPersonInfo("Anahita", "maleki", 20, "Tehran");
}
اگر بخواهیم این متد را بدون Named Arguments صدا بزنیم، باید تمام پارامترها را به ترتیب مشخص کنیم.
PrintPersonInfo("Anahita", "maleki", 20, "Tehran");
اما با استفاده از Named Arguments، میتوانیم پارامترها را به صورت نامگذاری شده و بدون توجه به ترتیب ارسال کنیم.
PrintPersonInfo(firstName: "Anahita", lastName: "maleki", age: 20, city: "Tehran");
یا حتی میتوانیم ترتیب پارامترها را تغییر دهیم.
PrintPersonInfo(city: "Tehran", age: 20, firstName: "Anahita", lastName: "maleki");
استفاده از Named Arguments برای پارامترهای اختیاری
در سیشارپ، پارامترهای اختیاری به شما این امکان را میدهند که برخی از پارامترها را مقداردهی نکنید و از مقادیر پیشفرض استفاده کنید.
ترکیب Named Arguments و پارامترهای اختیاری بسیار کارآمد است. به عنوان مثال:
static void PrintPersonInfo(string firstName, string lastName, int age = 30, string city = "Unknown")
{
Console.WriteLine($"Name: {firstName} {lastName}, Age: {age}, City: {city}");
}
static void Main(string[] args)
{
PrintPersonInfo(firstName: "Ali", lastName: "Ahmadi");
}
مزایای Named Arguments در C#
- خوانایی بیشتر: به دلیل مشخص بودن نام پارامترها، کد شما خوانایی بیشتری پیدا میکند.
- نعطافپذیری در ترتیب پارامترها: نیازی به رعایت ترتیب پارامترها در فراخوانی متد نیست.
- .استفاده بهتر از پارامترهای اختیاری: تنها پارامترهای مورد نیاز را مقداردهی کرده و بقیه را از مقدار پیشفرض استفاده میکنید.
نکته: در زمان استفاده ازNamed Arguments، اگر پارامترهای موقعیتی (بدون نام) و نامگذاری شده با هم ترکیب شوند، ابتدا باید پارامترهای موقعیتی و سپس پارامترهای نامگذاری شده قرار گیرند؛ در غیر این صورت، خطا رخ میدهد
// درست
PrintPersonInfo("Ali", lastName: "Ahmadi", city: "Tehran");
// غلط
PrintPersonInfo(firstName: "Ali", "Ahmadi", 30);