جایگزین تمیز برای if-elseهای تودرتو
از نوشتن if-else if-elseهای طولانی و تودرتو خسته شدید؟ برای وقتهایی که میخواید یه متغیر رو با چندین مقدار ثابت مقایسه کنید، #C یه راه حل خیلی تمیزتر و خواناتر داره: دستور switch.
1️⃣ ساختار اصلی switch
ساختارش سادهست: شما یه متغیر رو به switch میدید و بعد با استفاده از case، حالتهای مختلفی که اون متغیر میتونه داشته باشه رو بررسی میکنید.
ساختار case: مقدار ثابتی که میخوای بررسی کنی.
ساختار break: مهمترین بخش! بعد از اینکه کد یه case اجرا شد، break باعث میشه که از کل بلوک switch خارج بشیم. اگه break رو نذارید، کدتون خطا میده!
ساختار default: اگه هیچکدوم از caseها با مقدار متغیر نخوندن، این بلوک اجرا میشه. مثل else نهایی عمل میکنه.
void ShowCard(int cardNumber)
{
switch (cardNumber)
{
case 13:
Console.WriteLine("King");
break;
case 12:
Console.WriteLine("Queen");
break;
case 11:
Console.WriteLine("Jack");
break;
default: // برای بقیه اعداد
Console.WriteLine(cardNumber);
break;
}
}
2️⃣ تکنیکهای پیشرفتهتر switch کلاسیک
این switch کلاسیک دو تا ترفند جالب دیگه هم داره:
🧱 روی هم چیدن caseها:
اگه میخواید برای چند تا case مختلف، یه کد یکسان اجرا بشه، میتونید اونها رو پشت سر هم و بدون break بنویسید:
switch (cardNumber)
{
case 13:
case 12:
case 11:
Console.WriteLine("Face card");
break;
default:
Console.WriteLine("Plain card");
break;
}
⬆️پرش با goto case:
یه قابلیت کمتر شناخته شده، goto case هست که به شما اجازه میده از یک case به یه case دیگه بپرید:
switch (cardNumber)
{
case 12:
Console.WriteLine("Queen");
break;
case -1: // جوکر
goto case 12; // جوکر مثل بیبی حساب میشه!
// ... بقیه case ها
}
🤔 حرف حساب و تجربه شما
با اینکه switch در نسخههای جدید #C خیلی قدرتمندتر شده (که تو پست بعدی بهش میپردازیم)، همین نسخه کلاسیکش هم ابزار فوقالعادهای برای تمیزتر کردن منطقهای شرطی شماست.
شما بیشتر از switch استفاده میکنید یا if-else if؟ جایی بوده که switch واقعاً کدتون رو تمیزتر کرده باشه؟
خب، اینجا که نمیشه همه حرفا رو زد! 😉
ادامهی بحث، سوالات، غر زدنها و گپ و گفتهای خودمونی، فقط تو گروه.
[پاتوق گیک های #C]
🔖 هشتگها:
#CSharp #Programming #Developer #DotNet #ControlFlow #SwitchCase #CleanCode