TGViewer
C# Geeks (.NET) C# Geeks (.NET) @csharpgeeks · 548 subscribers
Post #68 87
🏷 خداحافظی با اشتباهات ترتیب پارامترها:
قدرت Named Arguments در #C

تا حالا شده یه متد با چند تا ورودی از یک نوع (مثلاً چند تا int یا bool) داشته باشید و موقع صدا زدنش، جای دو تا آرگومان رو با هم اشتباه بگیرید؟ یا ندونید هر مقدار مال کدوم پارامتره؟

😎سی‌شارپ با قابلیت آرگومان‌های نام‌دار (Named Arguments) این مشکل رو برای همیشه حل کرده و خوانایی کد شما رو به شدت بالا می‌بره.

1️⃣آرگومان نام‌دار چیست؟

خیلی ساده‌ست! به جای اینکه به ترتیب، فقط مقدارها رو به متد پاس بدید، می‌تونید اسم پارامتر رو بنویسید، بعد دو نقطه (:) و بعد مقدارش رو.
void Foo(int x, int y) 
{
Console.WriteLine($"x: {x}, y: {y}");
}

// صدا زدن متد با آرگومان‌های نام‌دار
Foo(x: 1, y: 2); // خروجی: x: 1, y: 2


2️⃣قدرت اصلی: بی‌نیازی از ترتیب!

زیبایی این قابلیت اینه که وقتی از اسم پارامترها استفاده می‌کنید، دیگه ترتیب مهم نیست! می‌تونید اون‌ها رو به هر ترتیبی که دوست دارید به متد پاس بدید. این کار، کد رو خیلی خواناتر می‌کنه.
// این دو خط کد دقیقاً یک کار یکسان رو انجام میدن
Foo(x: 1, y: 2);
Foo(y: 2, x: 1);


3️⃣ترکیب با آرگومان‌های معمولی(Positional) ⚠️

شما می‌تونید آرگومان‌های معمولی (بدون نام) و نام‌دار رو با هم ترکیب کنید، اما یه قانون مهم داره: آرگومان‌های معمولی باید همیشه قبل از آرگومان‌های نام‌دار بیان.
// ✅ درسته: اول معمولی، بعد نام‌دار
Foo(1, y: 2);

// ❌ خطای کامپایل: نمی‌تونی بعد از نام‌دار، معمولی بیاری
// Foo(x: 1, 2); // این کار معمولاً توصیه نمیشه، هرچند اگه آرگومان در جایگاه درستش باشه، کامپایلر قبول می‌کنه



4️⃣بهترین کاربرد: پارامترهای اختیاری

قدرت واقعی آرگومان‌های نام‌دار، وقتی مشخص میشه که با پارامترهای اختیاری ترکیب بشن.

فرض کنید متدی با چندین پارامتر اختیاری دارید و فقط می‌خواید مقدار آخری رو تغییر بدید. بدون آرگومان نام‌دار، باید برای تمام پارامترهای قبلی هم مقدار پیش‌فرضشون رو دوباره بنویسید! اما با این قابلیت، کار خیلی ساده میشه:
void Bar(int a = 0, int b = 0, int c = 0, int d = 0) 
{
Console.WriteLine($"a:{a}, b:{b}, c:{c}, d:{d}");
}

// فقط پارامتر d رو مقداردهی می‌کنیم و بقیه پیش‌فرض باقی می‌مونن
Bar(d: 3); // خروجی: a:0, b:0, c:0, d:3


🤔 حرف حساب و تجربه شما

آرگومان‌های نام‌دار ابزار فوق‌العاده‌ای برای افزایش خوانایی و کاهش باگ‌های ناشی از ترتیب اشتباه پارامترها هستن، به خصوص در متدهایی با تعداد ورودی زیاد.

شما بیشتر کجا از Named Arguments استفاده می‌کنید؟ آیا این قابلیت به تمیزتر شدن کدهاتون کمک کرده؟

خب، اینجا که نمیشه همه حرفا رو زد! 😉
ادامه‌ی بحث، سوالات، غر زدن‌ها و گپ و گفت‌های خودمونی، فقط تو گروه.

[پاتوق گیک های #C]

🔖 هشتگ‌ها:
#CSharp
#DotNet
#CleanCode
More from @csharpgeeks
  1. Sep 22, 2026یه مدتی قراره از دنیای NET. فاصله بگیرم، چون وقتشه برم سربازی. راستش نمیدونم این مدت رو چج…
  2. Sep 20, 2026🔥 حالا مشکل اصلی: Alert Storm فرض کن Database از دسترس خارج شده. ۱۰۰ Pod داری. هر Pod می‌…
  3. Sep 20, 2026🚨 طراحی سیستم Monitoring و Alerting در یک سیستم بزرگ فرض کن ساعت ۳ صبح است. سیستم شما با…
  4. Sep 19, 2026#Engineering_Leadership تصمیم نگرفتن هم یک تصمیم است یه چیز عجیب توی تیم‌های مهندسی: گاهی…
  5. Sep 19, 2026☑ چک‌لیست آماده‌سازی تیم، فرایندها و زیرساخت برای توسعه با AI توجه: هیچ چک‌لیستی جهان‌شمول…
  6. Sep 19, 2026📌پایان یک انتظار طولانی: اعتبارسنجی ناهمگام (Async Validation) در NET 11.
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →