دستور Switch در C#

دستور Switch در C#
دستور switch
در C# یک ساختار کنترلی قدرتمند است که برای اجرای بلوکهای مختلف کد بر اساس مقدار یک متغیر یا عبارت استفاده میشود. این دستور معمولاً جایگزینی برای زنجیرههای طولانی از دستورهای if-else
است، بهخصوص زمانی که شرطها به یک متغیر خاص وابسته باشند.
سینتکس
switch (عبارت)
{
case مقدار1:
// بلوک کد برای مقدار1
break;
case مقدار2:
// بلوک کد برای مقدار2
break;
// موارد اضافی
default:
// بلوک پیشفرض (اختیاری)
break;
}
نکات کلیدی:
- عبارت:
- عبارت در دستور
switch
باید به نوعی مثلint
،char
،string
یا یک شمارش (Enumeration) ارزیابی شود. - از C# 7.0 به بعد، پشتیبانی از تطبیق الگو (Pattern Matching) نیز اضافه شده است.
- عبارت در دستور
- موارد (Cases):
- هر
case
یک مقدار یا شرط خاص برای مقایسه با عبارت اصلی تعریف میکند. - دستور
break
اجرای بلوک را پس از رسیدن به یکcase
متوقف میکند. حذفbreak
باعث ادامهی اجرای موارد بعدی میشود (رفتار Fall-Through).
- هر
- مورد پیشفرض (Default):
- بلوک
default
زمانی اجرا میشود که هیچ یک از موارد دیگر مطابقت نداشته باشند. - وجود این بخش اختیاری است، اما استفاده از آن برای کامل بودن کد توصیه میشود.
- بلوک
- تطبیق الگو (Pattern Matching):
- از C# 7.0 به بعد، میتوان از الگوها برای موارد پیچیدهتر استفاده کرد.
مثال 1: دستور Switch ساده
int number = 2;
switch (number)
{
case 1:
Console.WriteLine(“یک”);
break;
case 2:
Console.WriteLine(“دو”);
break;
case 3:
Console.WriteLine(“سه”);
break;
default:
Console.WriteLine(“دیگر”);
break;
}
خروجی:
دو
مثال 2: تطبیق الگو (C# 8.0+)
object obj = 42;
switch (obj)
{
case int i when i > 0:
Console.WriteLine(“عدد صحیح مثبت”);
break;
case int i:
Console.WriteLine(“عدد صحیح غیرمثبت”);
break;
case string s:
Console.WriteLine($”رشتهای با طول {s.Length}”);
break;
default:
Console.WriteLine(“نوع ناشناخته”);
break;
}
خروجی:
عدد صحیح مثبت
مثال 3: عبارت Switch (C# 8.0+)
عبارت switch
روشی مختصر برای بازگرداندن مقادیر فراهم میکند:
int number = 3;
string result = number switch
{
1 => “یک”,
2 => “دو”,
3 => “سه”,
_ => “دیگر” // حالت پیشفرض
};
Console.WriteLine(result);
خروجی:
دستور switch
و عبارت switch
در کنار هم، انعطافپذیری زیادی برای مدیریت منطق شرطی در C# ایجاد میکنند.
دیدگاهتان را بنویسید