switch
int choice = 2; عدد صحیح 2 را نگه میدارد. بعد switch (choice) آن عدد را با برچسبهای ثابت مقایسه میکند. وقتی choice برابر 2 است، case 2 اجرا میشود و Console.WriteLine("mid") مقدار mid را مینویسد. صفحه یک خط است. نام کلاس عمومی را Pine نگه دارید.
یک مقدار، چند برچسب ثابت
فایل Pine را باز کنید. نام کلاس Pine میماند. این صفحه نوع را عوض نام نمیکند. اگر خط bool ready هنوز آنجاست، پاکش کنید، از جمله if (ready)، pass، wait، و هر بلوک else از صفحهٔ قبل. اگر خط bool both هنوز آنجاست، پاکش کنید. هر خط ReadLine را هم پاک کنید. فایلی که نگه میدارید منتظر تایپ نیست، ready ندارد، و دوشاخهٔ if / else هم ندارد. صفحه فقط با خط نوشتنی زیر case منطبق یا زیر default نوشته میشود.
درون Main، پیش از switch یک عدد صحیح نگه دارید: int choice = 2;. int کلمهٔ نوع است. choice نام است و با c کوچک شروع میشود. دور 2 گیومه نیست. سمیکالن خط نگهداری را تمام میکند. آن خط صفحه را نمینویسد. بعد از آن خود switch میآید:
switch (choice) {
case 1:
Console.WriteLine("low");
break;
case 2:
Console.WriteLine("mid");
break;
case 3:
Console.WriteLine("high");
break;
default:
Console.WriteLine("none");
break;
}
کلمهٔ switch با حرف کوچک است. داخل پرانتز نام choice نشسته — مقداری که C# با هر برچسب case مقایسه میکند. هر خط case با دونقطه تمام میشود، نه با سمیکالن. زیر case 2 مینشیند Console.WriteLine("mid"); بعد کلمهٔ break و یک سمیکالن. وقتی choice مقدار 2 دارد، C# وارد case 2 میشود، mid مینویسد، به break میرسد، و از کل switch خارج میشود. case 3 و default در این نوبت اجرا نمیشوند. فایل را ذخیره کنید.
فایلی که نگه میدارید
این شکل آموزشی را نگه دارید. یک کلمهٔ نوع، int. یک نام، choice، نگهداشته بهصورت 2. یک switch با پرانتز دور choice. caseهای 1، 2، و 3، هر کدام با یک خط نوشتن و یک break. یک default که none مینویسد. خط ready نیست، if نیست، و نوشتن لختِ رقم 2 بیرون caseها هم نیست.
using System;
public class Pine
{
public static void Main()
{
int choice = 2;
switch (choice)
{
case 1:
Console.WriteLine("low");
break;
case 2:
Console.WriteLine("mid");
break;
case 3:
Console.WriteLine("high");
break;
default:
Console.WriteLine("none");
break;
}
}
}
از بالا بخوانید. using System; نامهای کوتاه را آماده میکند. public class Pine نوع را نام میگذارد. public static void Main() جایی است که زمان اجرا شروع میکند. int choice = 2; مقدار 2 را نگه میدارد. چیزی نمینویسد. switch (choice) مقایسه را شروع میکند. case 2 جور میشود، پس Console.WriteLine("mid"); اجرا میشود، بعد break; از switch خارج میشود. روی صفحه یک خط: mid. گیومه روی صفحه نیست. خط دوم نیست. در فایلی که نگه میدارید خط bool ready نیست.
با dotnet run اجرا کنید. برنامه مقدار mid را مینویسد. منتظر نمیماند که شما چیزی تایپ کنید. عدد نگهداشته و switch از قبل داخل فایل بودند. اگر dotnet run منتظر ماند، هنوز ReadLine داخل فایل است. آن خط را پاک کنید و int choice = 2; و همان switch بالا را نگه دارید. برنامه بعد از خط نوشتن انتخابشده تمام میشود. صفحه mid را نشان میدهد. یک خط. اگر صفحه 2 را نشان دهد، هنوز خود عدد را مینویسید. اگر صفحه pass یا wait را نشان دهد، فایل if / else هنوز سر جایش است. دوشاخهٔ ready را پاک کنید. اگر صفحه none را نشان دهد، choice مقداری است که با هیچ case جور نیست — آن فایل دوم این صفحه است، نه فایلی که نگه میدارید. اگر صفحه حرفهای switch (choice) را نشان دهد، خط نوشتن دور همان نویسهها گیومه دارد. برای صفحهای که خط اشتباه نشان میدهد SDK داتنت را دوباره نصب نکنید.
چرا mid و نه low یا high؟ چون مقدار داخل پرانتز 2 بود، و case 2 برچسبی است که جور میشود. C# در این اجرا رقم 2 را نمینویسد مگر خودتان خط نوشتن برای آن رقم بنویسید. همان خط نوشتنی را مینویسد که زیر case منطبق اجرا میشود. پرانتز مقداری را نگه میدارد که مقایسه میشود. هر برچسب case اینجا یک عدد صحیح ثابت است. break از switch خارج میشود تا caseهای بعدی ساکت بمانند. default منتظر مقداری است که با هیچ case جور نباشد — وقتی choice برابر 2 است بیاستفاده میماند.
وقتی هیچ case جور نیست
فقط مقدار نگهداشته را عوض کنید: int choice = 9;. ساختار switch همان بماند. حالا هیچکدام از case 1، case 2، یا case 3 جور نیست. C# به default میرود و Console.WriteLine("none"); را اجرا میکند. صفحه باید none را نشان دهد، یک خط.
using System;
public class Pine
{
public static void Main()
{
int choice = 9;
switch (choice)
{
case 1:
Console.WriteLine("low");
break;
case 2:
Console.WriteLine("mid");
break;
case 3:
Console.WriteLine("high");
break;
default:
Console.WriteLine("none");
break;
}
}
}
این فایل دوم است. فایلی که نگه میدارید نیست. dotnet run را اجرا کنید. صفحه none را نشان میدهد. یک خط. mid را نشان نمیدهد. 9 را هم نشان نمیدهد مگر عمداً آن رقم را بنویسید. اگر صفحه mid را نشان دهد، هنوز روی فایلی هستید که نگه میدارید، جایی که choice برابر 2 است. بعد از دیدن none، فایل نگهداشته را برگردانید: int choice = 2; و همان switch که روی case 2 مقدار mid مینویسد. هر دو نسخه C# معتبرند. همان شکل switch را با case منطبق و با default آموزش میدهند.
اجرای default را یکبار دیگر به ترتیب بخوانید. choice مقدار 9 دارد. switch (choice) شروع میشود. case 1 جور نیست. case 2 جور نیست. case 3 جور نیست. کنترل به default میرسد. Console.WriteLine("none"); اجرا میشود. روی صفحه یک خط. خود رقم 9 ظاهر نمیشود مگر عمداً بنویسیدش.
break جلوی caseهای بعدی را میگیرد
break تزئین نیست. بدون آن، C# بعد از یک تطبیق میتواند خطهای case بعدی را هم اجرا کند. آن fall-through مبتدیها را غافلگیر میکند. اینجا دموی کوتاهی است که عمداً بعد از case 2 کلمهٔ break را فراموش میکند — فایلی که نگه میدارید نیست:
using System;
public class Pine
{
public static void Main()
{
int choice = 2;
switch (choice)
{
case 1:
Console.WriteLine("low");
break;
case 2:
Console.WriteLine("mid");
case 3:
Console.WriteLine("high");
break;
default:
Console.WriteLine("none");
break;
}
}
}
با choice برابر 2 و بدون break زیر case 2، صفحه میتواند در یک خط mid و در خط بعد high را نشان دهد. case 2 جور شد، mid نوشت، بعد به case 3 افتاد و high نوشت. فایلی که نگه میدارید زیر هر case یک break میگذارد تا هر مسیر دقیقاً یک خط بنویسد. پیش از آن که دوباره فایل Pine را فایل درس نگهداشته بدانید، break را برگردانید.
قاعدههایی که برچسبها را روشن نگه میدارند
پرانتز دور مقدار switch لازم است. نوشتن switch choice { … } بدون پرانتز باعث میشود build خطا بنویسد. هر برچسب case در این صفحه یک ثابت عدد صحیح است: case 1:، case 2:، case 3:. بعد از برچسب دونقطه میآید. نوشتن case 2; با سمیکالن بهجای دونقطه شکل درسی نیست که این صفحه build کند. default بعد از خودش مقدار ندارد — فقط default: بعد خطهای «هیچکدام جور نبود».
switch همان ابزار if نیست. if (ready) یک پرسش true یا false میپرسد. switch (choice) یک مقدار را با فهرستی از برچسبهای ثابت جور میکند. switch (ready) را با یک bool ننویسید و همان شکل درس صفحهٔ قبل را انتظار نداشته باشید. دموهای این صفحه را روی یک int به نام choice و برچسبهای عدد صحیح نگه دارید. مقایسههایی مثل if (score > 10) وقتی به بازه نیاز دارید هنوز مال ifاند؛ switch وقتی میدرخشد که مقدارها جدا و از قبل معلوم باشند.
اشتباه رایج نوشتن خود نحو است: Console.WriteLine("switch (choice)");. آن خط نویسههای switch (choice) را مینویسد. caseای انتخاب نمیکند. اشتباه دیگر گذاشتن دموی if / else در همان Main است و تعجب از این که صفحه pass نشان میدهد نه mid. Main این جلسه باید فقط همان int و همان switch را نگه دارد.
📊 choice and the screen
| choice | Screen |
|---|---|
| 1 | low |
| 2 | mid |
| 3 | high |
| 9 | none |
جدول را بعد از یک اجرا برای چک به کار ببرید، نه بهجای اجرا. choice برابر 2 با فایلی که نگه میدارید mid مینویسد. choice برابر 9 با فایل دوم none مینویسد. choice برابر 1 مقدار low مینویسد. choice برابر 3 مقدار high مینویسد. اگر برای choice برابر 2 هم mid و هم high ظاهر شوند، زیر case 2 یک break کم است — breakها را درست کنید، نه این که SDK داتنت را دوباره نصب کنید.
حالا میتوانید یک عدد صحیح نگه دارید، آن را داخل switch (…) بگذارید، و به هر مقدار ثابت case خودش را با یک خط نوشتن و یک break بدهید. وقتی case جور شود آن خط اجرا میشود؛ وقتی هیچکدام جور نباشد default اجرا میشود. صفحهٔ بعد for است، جایی که همان بلوک خطها میتواند بارها اجرا شود وقتی یک شمارنده عوض میشود.
صفحه همان case منطبق است
فایلی که نگه میدارید mid مینویسد. نام choice داخل پرانتز است، و choice روی صفحه نیست. رقم 2 روی خط نگهداری است، و 2 روی صفحه نیست. caseهای دیگر داخل فایلاند، و در اجرای نگهداشته اجرا نمیشوند. گیومه دور switch (choice) حرف مینویسد، نه case منطبق را.
🧠 دانش خود را بیازمایید
دانش خود را بیازمایید
خود را با این آزمون تعاملی به چالش بکشید و ببینید موضوع را چقدر خوب درک کردهاید
📝 دستورالعملها
- هر سوال را با دقت بخوانید
- بهترین پاسخ را برای هر سوال انتخاب کنید
- میتوانید آزمون را هر چند بار که میخواهید تکرار کنید
- پیشرفت شما در بالا نمایش داده میشود