آموزش سی شارپ - دستور switch
دستور switch به ما این امکان را می دهد تا یک متغیر را برای برابری با لیستی از مقادیر تست کنیم. هر مقدار یک مورد switch نامیده می شود و متغیری که روی آن تبدیل می شود برای هر مورد switch بررسی می شود.
نحوه نوشتاری
نحوه نوشتاری یک دستور switch در سی شارپ به شرح زیر است −
switch(expression) {
case constant-expression1 :
statement(s);
break;
case constant-expression2 :
case constant-expression3 :
statement(s);
break;
/* you can have any number of case statements */
default : /* Optional */
statement(s);
}
قوانین زیر برای یک دستور switch اعمال می شود −
-
Expression مورد استفاده در یک دستور switch باید دارای نوع صحیح یا شمارشی باشد یا نوع کلاسی باشد که کلاس دارای یک تابع تبدیل به یک نوع صحیح یا شمارشی باشد.
-
شما می توانید هر تعدادی از دستورات case را درون یک switch داشته باشید. هر case با مقداری که با آن مقایسه می شود و دو نقطه پایان می یابد.
-
constant-expression برای یک case باید دارای همان نوع دادهای باشد که متغیر در switch دارد و باید ثابت یا حرفهای باشد.
-
هنگامی که متغیری که بر روی آن switch شده است، برابر با یک case باشد، دستورات پس از آن case اجرا می شوند تا زمانی که دستور break به دست آید.
-
هنگامی که دستور break به دست آید، switch پایان می یابد و جریان کنترل به خط بعدی پس از دستور switch منتقل می شود.
-
هر case نیاز به شامل داشتن break ندارد. اگر هیچ breakی وجود نداشته باشد، در زمان کامپایل، یک خطای زمان اجرا بوجود خواهد آمد.
-
یک دستور switch میتواند شامل یک مورد اختیاری default باشد که باید در انتهای switch ظاهر شود. مورد پیشفرض برای انجام کاری استفاده میشود که زمانی که هیچ کدام از موارد درست نیستند، اجرا شود.
نمودار جریان
مثال
using System;
namespace DecisionMaking {
class Program {
static void Main(string[] args) {
/* local variable definition */
char grade = 'B';
switch (grade) {
case 'A':
Console.WriteLine("Excellent!");
break;
case 'B':
case 'C':
Console.WriteLine("Well done");
break;
case 'D':
Console.WriteLine("You passed");
break;
case 'F':
Console.WriteLine("Better try again");
break;
default:
Console.WriteLine("Invalid grade");
break;
}
Console.WriteLine("Your grade is {0}", grade);
Console.ReadLine();
}
}
}
وقتی کد بالا کامپایل و اجرا شود، نتیجه زیر را تولید میکند −
Well done
Your grade is B