مشخصات مقاله
-
4387
-
0.0
-
17318
-
0
-
0
دستور switch (switch statement) در سی شارپ
وقتی توی برنامهنویسی لازم میشه مقدار یک متغیر رو با چند مقدار مشخص مقایسه کنید و بر اساس نتیجه، تصمیم متفاوتی بگیرید، دستور switch میتونه انتخاب خیلی مناسبی باشه. با استفاده از این دستور میتونید چند حالت مختلف رو مرتب بررسی کنید و برای هر حالت، دستور موردنظر رو اجرا کنید.
اگه در حال یادگیری C# هستید، آشنایی با ساختارهای تصمیمگیری مثل switch یکی از مباحث مهم این مسیره. توی ادامهی این مطلب، ساختار switch، نحوه استفاده از case و default و چند مثال کاربردی رو بررسی میکنیم تا نحوه کار این دستور رو بهتر درک کنید.
بعضی وقتها لازمه مقدار یک متغیر رو با چند مقدار از قبل مشخصشده مقایسه کنیم و بر اساس نتیجهی این مقایسه تصمیم بگیریم. دستور switch دقیقاً برای همین موقعیتها کاربرد داره و کمک میکنه حالتهای مختلف رو به شکل مرتب بررسی کنیم.
وقتی یک عبارت رو بررسی میکنیم و نتیجهی اون قراره باعث اجرای یک دستور خاص بشه، switch نتیجهی عبارت رو ارزیابی میکنه و بر اساس حالتهای مختلف، دستور مناسب رو اجرا میکنه. به هر کدوم از این حالتهای احتمالی case گفته میشه. case ها داخل بدنهی اصلی دستور switch قرار میگیرن و هر کدوم در صورت مطابقت با نتیجهی عبارت، دستور مربوط به خودشون رو اجرا میکنن. بدنهی اصلی switch هم داخل کاراکترهای " { " و " } " قرار میگیره. ساختار کلی این دستور به شکل زیره.
switch(Expression)
{
case Choice 1:
Statement 1;
break;
case Choice 2:
Statement 2;
break;
case Choice n:
Statement n;
break;
}
در زبان C++ میشه کلیدواژهی break رو از case حذف کرد. یعنی بعد از اجرای کد مربوط به یک case، اگر break وجود نداشته باشه، برنامه وارد case بعدی میشه. این رفتار ممکنه باعث سردرگمی یا ایجاد مشکل در روند اجرای برنامه بشه. اما در C# برای جلوگیری از چنین حالتی، معمولاً باید انتهای هر case مشخص کنید که اجرای اون بخش باید متوقف بشه. این کار با استفاده از کلیدواژهی break انجام میشه. مقداری که در case بررسی میشه میتونه یک عدد صحیح یا integer باشه. از اونجا که enum و نوع دادهی کاراکتری char هم در این زمینه قابل استفاده هستن، میتونید اونها رو هم در switch به کار ببرید. در مثال زیر یک نمونه استفاده از دستور switch رو میبینید.
using System;
public enum HouseType
{
Unknown,
SingleFamily,
Townhouse,
Condominium
}
public class Exercise
{
public static int Main()
{
var type = HouseType.Unknown;
var choice = 0;
var garage = "";
Console.WriteLine("Enter the type of house you want to purchase");
Console.WriteLine("1. Single Family");
Console.WriteLine("2. Townhouse");
Console.WriteLine("3. Condominium");
Console.Write("You Choice? ");
choice = int.Parse(Console.ReadLine());
switch (choice)
{
case 1:
type = HouseType.SingleFamily;
break;
case 2:
type = HouseType.Townhouse;
break;
case 3:
type = HouseType.Condominium;
break;
}
Console.Write("Does the house have an indoor garage (1=Yes/0=No)? ");
var answer = int.Parse(Console.ReadLine());
if (answer == 1)
garage = "Yes";
else
garage = "No";
Console.WriteLine("\nDesired House Type: {0}", type);
Console.WriteLine("Has indoor garage? {0}", garage);
Console.ReadLine();
return 0;
}
}
وقتی switch در حال بررسی case های مختلفه، ممکنه کاربر مقداری وارد کنه که هیچکدوم از case های تعریفشده با اون مطابقت نداشته باشن. برای مدیریت این حالت از کلیدواژهی default استفاده میکنیم. بخش default زمانی اجرا میشه که هیچکدوم از case های موجود با نتیجهی ارائهشده مطابقت نداشته باشن. ساختار switch همراه با default به صورت زیره.
switch(Expression)
{
case Choice1:
Statement1;
break;
case Choice2:
Statement2;
break;
case Choice-n:
Statement-n;
break;
default:
Other-Possibility;
break;
}
در C++، چون default معمولاً آخرین بخش switch محسوب میشه، میتونه بدون کلیدواژهی break هم نوشته بشه. اما در C# هر case و همچنین بخش default باید مسیر خروج خودش رو داشته باشه که این کار با break انجام میشه. بنابراین، نسخهی کاملتر مثال قبلی که default رو هم در نظر میگیره، به شکل زیر خواهد بود.
using System;
public enum HouseType
{
Unknown,
SingleFamily,
Townhouse,
Condominium
}
public class Exercise
{
public static int Main()
{
var type = HouseType.Unknown;
var choice = 0;
var garage = "";
Console.WriteLine("Enter the type of house you want to purchase");
Console.WriteLine("1. Single Family");
Console.WriteLine("2. Townhouse");
Console.WriteLine("3. Condominium");
Console.Write("You Choice?");
choice = int.Parse(Console.ReadLine());
switch (choice)
{
case 1:
type = HouseType.SingleFamily;
break;
case 2:
type = HouseType.Townhouse;
break;
case 3:
type = HouseType.Condominium;
break;
default:
type = HouseType.Unknown;
break;
}
Console.Write("Does the house have an indoor garage (1=Yes/0=No)?");
var answer = int.Parse(Console.ReadLine());
if (answer == 1)
garage = "Yes";
else
garage = "No";
Console.WriteLine("\nDesired House Type: {0}", type);
Console.WriteLine("Has indoor garage? {0}", garage);
return 0;
}
}
نمونهای از اجرای برنامه رو میتونید در خروجی زیر ببینید:
Enter the type of house you want to purchase 1. Single Family 2. Townhouse 3. Condominium You Choice? 8 Does the house have an indoor garage (1=Yes/0=No)? 2 Desired House Type: Unknown Has indoor garage? No Press any key to continue...
اگه قصد دارید یادگیری C# رو منظمتر و اصولیتر ادامه بدید، میتونید در کنار مطالعهی مباحث مختلف، از دوره آموزش C# هم استفاده کنید و مسیر یادگیری برنامهنویسی با C# رو کاملتر پیش ببرید.
علاوه بر نوع int، میتونید از بعضی انواع دیگر دادههای صحیح هم در دستور switch استفاده کنید. حتی میشه از حروف هم برای بررسی case ها کمک گرفت. برای اینکه این موضوع روشنتر بشه، به مثال زیر توجه کنید.
using System;
public enum HouseType
{
Unknown,
SingleFamily,
Townhouse,
Condominium
}
public class Exercise
{
public static int Main()
{
var type = HouseType.Unknown;
var choice = 0;
var garage = "";
Console.WriteLine("Enter the type of house you want to purchase");
Console.WriteLine("1. Single Family");
Console.WriteLine("2. Townhouse");
Console.WriteLine("3. Condominium");
Console.Write("You Choice? ");
choice = int.Parse(Console.ReadLine());
switch (choice)
{
case 1:
type = HouseType.SingleFamily;
break;
case 2:
type = HouseType.Townhouse;
break;
case 3:
type = HouseType.Condominium;
break;
default:
type = HouseType.Unknown;
break;
}
Console.Write("Does the house have an indoor garage (y/n)? ");
var answer = char.Parse(Console.ReadLine());
switch (answer)
{
case 'y':
garage = "Yes";
break;
case 'Y':
garage = "Yes";
break;
case 'n':
garage = "No";
break;
case 'N':
garage = "No";
break;
default:
garage = "Not Specified";
break;
}
Console.WriteLine("\nDesired House Type: {0}"، type);
Console.WriteLine("Has indoor garage? {0}"، garage);
return 0;
}
}
نمونهای از اجرای این برنامه رو میتونید در خروجی زیر ببینید:
Enter the type of house you want to purchase 1. Single Family 2. Townhouse 3. Condominium You Choice? 3 Does the house have an indoor garage (y/n)? y Desired House Type: Condominium Has indoor garage? Yes Press any key to continue...
علاوه بر نوع int، میتونید از انواع دیگهی اعداد صحیح هم در دستور switch استفاده کنید. حتی امکان بررسی case ها با استفاده از حروف هم وجود داره. همونطور که در مثال بالا دیدید، با استفاده از char میشه پاسخهایی مثل y و n رو بررسی کرد.
اگه میخواید مباحث C# رو از پایه و به شکل منسجم دنبال کنید، میتونید مسیر یادگیریتون رو با دوره آموزش C# ادامه بدید و مباحث مختلف این زبان رو قدمبهقدم یاد بگیرید.