دستور switch در سیشارپ
دستور switch در سیشارپ برای بررسی یک مقدار و انتخاب یکی از چند حالت مشخص استفاده میشود و با case و default نوشته میشود.
08 مهر 1405
لینک کوتاه
دستور switch در زبان #C
دستور switch یکی از ساختارهای شرطی مهم در زبان برنامهنویسی #C است که برای انتخاب و اجرای یکی از چند مسیر مختلف برنامه استفاده میشود.زمانی که بخواهیم مقدار یک متغیر یا عبارت را با چند مقدار مشخص مقایسه کنیم، استفاده از switch معمولاً خواناتر و مرتبتر از نوشتن چندین دستور if و else if است.
به زبان ساده، switch یک مقدار را دریافت میکند و بررسی میکند که این مقدار با کدام یک از حالتهای تعریفشده (case) مطابقت دارد. سپس دستورات مربوط به همان حالت اجرا میشوند.
ساختار کلی switch در سیشارپ
ساختار کلاسیک switch در #C به شکل زیر است:switch (expression)
{
case value1:
// دستورات
break;
case value2:
// دستورات
break;
default:
// اگر هیچ caseای مطابقت نداشت
break;
}
در این ساختار، expression عبارتی است که مقدار آن بررسی میشود.
هر case یک مقدار مشخص را نشان میدهد. اگر مقدار عبارت با مقدار یکی از caseها برابر باشد، دستورات آن بخش اجرا میشوند.
کلمه break باعث میشود برنامه پس از اجرای آن case از ساختار switch خارج شود.
بخش default نیز زمانی اجرا میشود که هیچکدام از caseها با مقدار مورد بررسی مطابقت نداشته باشند.
آیا به دنبال یک فرصت عالی برای یادگیری برنامهنویسی هستید؟ 🚀
با دوره آموزشی سیشارپ ما، شما میتوانید مهارتهای خود را به سطح جدیدی ارتقا دهید! این دوره بهطور کامل طراحی شده تا به شما کمک کند تا از مبتدی تا پیشرفته در دنیای برنامهنویسی سیشارپ پیش بروید.
👨🏫 چرا دوره ما را انتخاب کنید؟
- محتوای جامع و عملی: با پروژههای واقعی و تمرینات عملی، یادگیری را به تجربهای جذاب تبدیل کنید.
- مدرس مجرب: از تجربه و دانش مدرس حرفهای بهرهمند شوید که شما را در هر مرحله از یادگیری راهنمایی میکنند.
- پشتیبانی ۲۴/۷: هر زمان که سوالی داشتید، ما در کنار شما خواهیم بود تا به شما کمک کنیم.
- دسترسی مادامالعمر: به محتوای دوره دسترسی دائمی داشته باشید و هر زمان که خواستید، میتوانید به آن مراجعه کنید.
💡 فرصت را از دست ندهید!
بایادگیری سیشارپ، میتوانید در دنیای فناوری اطلاعات به یک متخصص تبدیل شوید و در پروژههای جذاب و چالشبرانگیز شرکت کنید.
همین امروز به جمع یادگیرندگان ما بپیوندید و اولین قدم را به سوی آیندهای روشنتر بردارید!
یک مثال ساده از دستور switch در سیشارپ
فرض کنیم میخواهیم بر اساس شماره روز هفته، نام روز را نمایش دهیم:int day = 3;
switch (day)
{
case 1:
Console.WriteLine("شنبه");
break;
case 2:
Console.WriteLine("یکشنبه");
break;
case 3:
Console.WriteLine("دوشنبه");
break;
case 4:
Console.WriteLine("سهشنبه");
break;
default:
Console.WriteLine("روز نامعتبر");
break;
}
در این مثال مقدار متغیر day برابر ۳ است. برنامه مقدار ۳ را با caseهای مختلف مقایسه میکند.
چون case 3 با مقدار متغیر برابر است، عبارت مربوط به آن اجرا میشود و خروجی «دوشنبه» خواهد بود.
چرا از switch استفاده میکنیم؟
یکی از مهمترین دلایل استفاده از switch، خوانایی بیشتر کد است.برای مثال، اگر بخواهیم یک متغیر را با چند مقدار مقایسه کنیم، میتوانیم از چندین if استفاده کنیم:
if (number == 1)
{
Console.WriteLine("یک");
}
else if (number == 2)
{
Console.WriteLine("دو");
}
else if (number == 3)
{
Console.WriteLine("سه");
}
همین کار را میتوان با switch انجام داد:
switch (number)
{
case 1:
Console.WriteLine("یک");
break;
case 2:
Console.WriteLine("دو");
break;
case 3:
Console.WriteLine("سه");
break;
}
در شرایطی که تعداد حالتها زیاد باشد، نسخه دوم معمولاً ساختار واضحتری دارد.
دستور default در سی شارپ
کلمه default برای زمانی استفاده میشود که هیچکدام از حالتهای case با مقدار موردنظر مطابقت نداشته باشند.مثلاً:
int number = 10;
switch (number)
{
case 1:
Console.WriteLine("عدد یک");
break;
case 2:
Console.WriteLine("عدد دو");
break;
default:
Console.WriteLine("عدد دیگری وارد شده است.");
break;
}
چون مقدار number برابر ۱۰ است و هیچ caseای برای ۱۰ وجود ندارد، بخش default اجرا میشود.
استفاده از default همیشه اجباری نیست، اما در بسیاری از برنامهها وجود آن باعث میشود حالتهای پیشبینینشده نیز مدیریت شوند.
استفاده از چند case برای یک نتیجه
گاهی چند مقدار باید دقیقاً یک عملیات را انجام دهند.در این حالت میتوان چند case را پشت سر هم قرار داد:
int month = 1;
switch (month)
{
case 1:
case 2:
case 3:
Console.WriteLine("فصل اول");
break;
case 4:
case 5:
case 6:
Console.WriteLine("فصل دوم");
break;
default:
Console.WriteLine("ماه نامعتبر");
break;
}
اگر مقدار month برابر ۱، ۲ یا ۳ باشد، برنامه عبارت «فصل اول» را نمایش میدهد.
switch با رشتهها
دستور switch فقط برای اعداد استفاده نمیشود.میتوان از آن برای مقایسه رشتهها نیز استفاده کرد.
برای مثال:
string color = "red";
switch (color)
{
case "red":
Console.WriteLine("قرمز");
break;
case "blue":
Console.WriteLine("آبی");
break;
case "green":
Console.WriteLine("سبز");
break;
default:
Console.WriteLine("رنگ ناشناخته");
break;
}
در این مثال مقدار متغیر color با رشتههای مختلف مقایسه میشود.
switch expression در سی شارپ
در نسخههای جدید #C، علاوه بر دستور switch، ساختاری به نام Switch Expression وجود دارد.این روش معمولاً کوتاهتر و مناسب زمانی است که بخواهیم بر اساس یک مقدار، نتیجهای را تولید کنیم.
مثلاً:
int number = 2;
string result = number switch
{
1 => "یک",
2 => "دو",
3 => "سه",
_ => "نامشخص"
};
Console.WriteLine(result);
در اینجا switch یک مقدار را بر اساس number تولید میکند.
علامت _ نقش حالت پیشفرض را دارد و زمانی استفاده میشود که هیچکدام از حالتهای قبلی مطابقت نداشته باشند.
تفاوت switch statement و switch expression
در switch statement معمولاً از case و break استفاده میکنیم:switch (number)
{
case 1:
Console.WriteLine("یک");
break;
case 2:
Console.WriteLine("دو");
break;
}
اما در switch expression از => استفاده میشود:
string result = number switch
{
1 => "یک",
2 => "دو",
_ => "نامشخص"
};
Switch expression زمانی بسیار مفید است که هدف اصلی ما تولید یک مقدار باشد.
pattern matching در switch
یکی از قابلیتهای قدرتمند #C جدید، استفاده از Pattern Matching در switch است.این قابلیت اجازه میدهد علاوه بر مقایسه ساده مقادیر، نوع داده و شرایط مختلف را نیز بررسی کنیم.
مثلاً:
int number = 15;
string result = number switch
{
> 0 => "مثبت",
< 0 => "منفی",
0 => "صفر"
};
Console.WriteLine(result);
در این مثال، به جای اینکه فقط به دنبال مقدار مشخصی باشیم، محدوده و شرایط مقدار را بررسی میکنیم.
همچنین میتوان چند شرط را با هم ترکیب کرد:
int age = 20;
string result = age switch
{
< 13 => "کودک",
>= 13 and < 18 => "نوجوان",
>= 18 => "بزرگسال"
};
Console.WriteLine(result);
این قابلیت باعث شده switch در نسخههای جدید #C بسیار انعطافپذیرتر از شکل سنتی آن باشد.
تفاوت switch و if در سی شارپ
دستور if برای بررسی شرایط مختلف بسیار انعطافپذیر است و زمانی که شرایط پیچیده و منطقی داریم، معمولاً انتخاب مناسبی است.برای مثال:
if (age >= 18 && hasLicense)
{
Console.WriteLine("مجاز به رانندگی");
}
اما switch زمانی بسیار مناسب است که بخواهیم یک مقدار را با چند حالت مختلف مقایسه کنیم:
switch (day)
{
case 1:
Console.WriteLine("شنبه");
break;
case 2:
Console.WriteLine("یکشنبه");
break;
}
البته با Pattern Matching، قابلیتهای switch در #C جدید بسیار گستردهتر شدهاند و در بعضی شرایط میتوان از آن برای بررسی شرایط پیچیدهتر نیز استفاده کرد.
نکات مهم در استفاده از switch
اولین نکته این است که در switch کلاسیک، باید به break توجه کنیم.اگر ساختار case به شکل معمول نوشته شود، پس از اجرای دستورات باید مسیر اجرای switch مشخص باشد.
نکته دوم این است که بهتر است caseها را به صورت واضح و مرتب بنویسیم تا خوانایی برنامه حفظ شود.
نکته سوم استفاده مناسب از default است. اگر برنامه ممکن است با مقداری مواجه شود که قبلاً پیشبینی نشده، default میتواند برای مدیریت این وضعیت مفید باشد.
نکته چهارم این است که در پروژههای جدید، Switch Expression و Pattern Matching میتوانند کد را کوتاهتر و خواناتر کنند؛ البته باید متناسب با نسخه #C و نیاز برنامه از آنها استفاده کرد.
یک مثال کاربردی دستور switch در سیشارپ
فرض کنیم برنامهای داریم که بر اساس نمره دانشآموز، وضعیت او را مشخص میکند:int grade = 17;
string result = grade switch
{
>= 18 and <= 20 => "عالی",
>= 15 and < 18 => "خوب",
>= 10 and < 15 => "قابل قبول",
>= 0 and < 10 => "مردود",
_ => "نمره نامعتبر"
};
Console.WriteLine(result);
در این مثال، اگر نمره ۱۷ باشد، برنامه مقدار "خوب" را در متغیر result قرار میدهد.
این نمونه نشان میدهد که switch در #C فقط برای بررسی مقادیر ثابت نیست و با استفاده از Pattern Matching میتوان محدودههای مختلف را نیز بررسی کرد.
جمعبندی
دستور switch یکی از ساختارهای مهم تصمیمگیری در #C است که برای انتخاب بین چند حالت مختلف استفاده میشود.شکل کلاسیک آن شامل switch، چند case، در صورت نیاز default و معمولاً break است.
این دستور بهخصوص زمانی کاربرد دارد که یک متغیر باید با چند مقدار مشخص مقایسه شود.
برای مثال، انتخاب روز هفته، منوی برنامه، نوع عملیات، وضعیت سفارش یا گزینه انتخابشده توسط کاربر، همگی میتوانند با switch پیادهسازی شوند.
در نسخههای جدید #C، قابلیتهایی مانند Switch Expression و Pattern Matching امکانات بیشتری در اختیار برنامهنویس قرار دادهاند.
به کمک این قابلیتها میتوان کدهایی کوتاهتر، خواناتر و انعطافپذیرتر نوشت.
به طور کلی، میتوان گفت switch جایگزینی برای همهی ifها نیست، اما در موقعیتهایی که چند حالت مشخص برای یک مقدار داریم، میتواند ساختار برنامه را بسیار مرتبتر و قابل فهمتر کند.




کاربران ما
شما هم نظرتون با ما دریاره “دستور switch در سیشارپ” اشتراک بزارید
برای ارسال نظر لطفا ورود یا ثبت نام کنید