بیان switch یک بیان کنترلی است که بوسیله انتخاب های چندگانه و مجموعه های شمارشی (enumerations) ، با پاس دادن کنترل اجرای برنامه به یکی از بیان های case داخلی اش، روند اجرایی برنامه را کنترل می کند؛ مانند مثال زیر:
int caseSwitch = 1; switch (caseSwitch) { case 1: Console.WriteLine("Case 1"); break; case 2: Console.WriteLine("Case 2"); break; default: Console.WriteLine("Default case"); break; }
کنترل اجرای برنامه به بیان case ی که با مقدار switch یکسان باشد، منتقل می شود. بیان switch می تواند حاوی هر تعداد از نمونه های case باشد، اما دو بیان case نمی توانند مقادیر یکسان داشته باشند.
اجرای بدنه بیان switch از بیان انتخاب شده توسط switch شروع می شود و آنقدر ادامه پیدا می کند تا اینکه بیان break کنترل اجرا را به بیرون بدنه case انتقال دهد.بعد از هر بلوک case ، از جمله آخرین بلوک که یا بیان case و یا بیان default است، لازم است که از یک بیان پرشی (jump statement) ، از جمله break استفاده شود. با یک استثناء ، (بر خلاف بیان switch در ++C) ، سی شارپ از سقوط ضمنی از یک برچسب case به دیگری (با ننوشتن break)، پشتیبانی نمی کند. تنها استثنا این است که بیان case دارای هیچ کدی نباشد.
اگر هیچ عبارت case ی با مقدار switch یکسان نباشد، آنگاه روند اجرایی برنامه به بیان(های) بعد از برچسب اختیاری default ، منتقل می شود. اگر هیچ پرچسب default ی وجود نداشته باشد، کنترل به بیرون بیان switch منقل می شود.
class SwitchTest { static void Main() { Console.WriteLine("Coffee sizes: 1=Small 2=Medium 3=Large"); Console.Write("Please enter your selection: "); string s = Console.ReadLine(); int n = int.Parse(s); int cost = 0; switch(n) { case 1: cost += 25; break; case 2: cost += 25; goto case 1; case 3: cost += 50; goto case 1; default: Console.WriteLine("Invalid selection. Please select 1, 2, or 3."); break; } if (cost != 0) { Console.WriteLine("Please insert {0} cents.", cost); } Console.WriteLine("Thank you for your business."); } } /* Sample Input: 2 Sample Output: Coffee sizes: 1=Small 2=Medium 3=Large Please enter your selection: 2 Please insert 50 cents. Thank you for your business. */
در مثال قبل، متغیر نوع صحیحی به نام n، برای case های switch استفاده شده بود. دقت کنید که شما همچنین می توانید مستقیما" از متغیر رشته ای s استفاده کنید. در چنین حالتی باید بصورت زیر عمل کنید:
switch(s) { case "1": // ... case "2": // ... }
مثال زیر نشان می دهد که سقوط ضمنی از یک برچسب case به دیگری برای case های خالی، امکان پذیر است.
class SwitchTest2 { static void Main() { int n = 2; switch(n) { case 1: case 2: case 3: Console.WriteLine("It's 1, 2, or 3."); break; default: Console.WriteLine("Not sure what it is."); break; } } } // Output: It's 1, 2, or 3.
واقعا سایت جالبی دارید خدا خیرتون بده
فقط لطفا اگه میشه توضیح بدید چطور میشه ورودی case یک کاراکتر باشه
ممنون