✨ از دستور به عبارت: تکامل switch در #C مدرن (Switch Expressions)
تو پستهای قبلی با switch کلاسیک و switch با Pattern Matching آشنا شدیم. اما انقلاب switch اینجا تموم نمیشه! از C# 8 به بعد، switch میتونه به عنوان یک عبارت (Expression) هم استفاده بشه.
یعنی چی؟ یعنی میتونه یه مقدار رو برگردونه! این قابلیت، کدهای شرطی رو به شدت کوتاهتر و خواناتر میکنه.
1️⃣ معرفی switch expression: خداحافظی با case و break
در این حالت جدید، switch دیگه یه دستور برای کنترل جریان نیست، بلکه یه عبارته که یه مقدار تولید میکنه. سینتکسش خیلی خلاصهتر و تمیزتره:
متغیر قبل از switch میاد.
به جای case x: و break;، از x => result, استفاده میکنیم.
برای حالت default، از _ (discard pattern) استفاده میکنیم.
string cardName = cardNumber switch
{
13 => "King",
12 => "Queen",
11 => "Jack",
_ => "Pip card" // معادل default
};
نکته مهم ⚠️: برخلاف switch statement، اگه تو یه switch expression حالت پیشفرض (_) رو نذارید و هیچکدوم از حالتها هم با مقدار ورودی نخونه، برنامهتون با یه Exception کرش میکنه!
2️⃣ قدرت اصلی: سوییچ روی چند مقدار با Tuple Pattern
قدرت واقعی switch expression وقتی مشخص میشه که میفهمید میتونید روی چند تا مقدار همزمان سوییچ کنید! این کار با استفاده از Tuples انجام میشه.
string cardName = (cardNumber, suite) switch
{
(13, "spades") => "King of spades",
(13, "clubs") => "King of clubs",
(12, "spades") => "Queen of spades",
// ...
_ => "Some other card"
};
این قابلیت به شما اجازه میده شرطهای خیلی پیچیده رو به شکلی فوقالعاده خوانا و تمیز بنویسید.
🤔 حرف حساب و تجربه شما
این switch expression یکی از بهترین قابلیتهای مدرن #C برای نوشتن کدهای تابعی (Functional)، خوانا و خلاصهست و در LINQ هم بسیار پرکاربرده.
شما از switch expression تو کدهاتون استفاده میکنید؟ به نظرتون این سینتکس از switch statement قدیمی بهتره؟
خب، اینجا که نمیشه همه حرفا رو زد! 😉
ادامهی بحث، سوالات، غر زدن ها و گپ و گفتهای خودمونی، فقط تو گروه.
[C# Geeks Hangout]
🔖 هشتگها:
#CSharp #Programming #Developer #DotNet #ModernCSharp #SwitchExpression #CleanCode