مسیر
/
C#
C#
/
برنامه‌ی درسی
/
دستورات switch
دس

دستورات switch در C#

2 تمرین

درباره‌ی دستورات switch

دستورهای switch تاریخچهی کهن در زبان‌های برنامه‌نویسی دارند. این دستورها در C معرفی شدند، جایی که به‌خاطر سرعتشان ارزشمند بودند. آن سرعت به قیمت کارایی بسیار محدودی تمام شد. در C# نقش دستور switch فراتر از اعداد صحیح گسترش یافته است. دستورهای switch می‌توانند هر نوع، مقدار یا ارجاع دلخواهی را در بر بگیرند.

اگر از یک زبان تابعی می‌آیید، کار کردن با دستورهای switch (و عبارت‌های switch که جای دیگری بحث شده‌اند) نزدیک‌ترین چیزی است که در C# به «اتحاد تفکیک‌شده» و «تطبیق الگو» خواهید یافت. با این حال، آنها به‌هیچ‌وجه قدرت اتحاد تفکیک‌شده را در اعمال ایمنی نوع ندارند.

دستورهای switch ساده به نیاکان C خود شباهت دارند و switch، case، break و default را با هم ترکیب می‌کنند.

int direction = GetDirection();
switch (direction)
{
    case 1:
        GoLeft();
        break;
    case 2:
        GoRight();
        break;
    default:
        MarkTime();
        break;
}

الگوی بالا را می‌توان با هر نوع ساده (نوع‌های اولیه به‌علاوه‌ی رشته‌ها) به کار برد.

وقتی نوع‌های ارجاعی هم به میان می‌آیند، نحوه‌ی نگارش اضافی لازم می‌شود، اول برای تبدیل نوع به پایین و بعد برای افزودن «نگهبان»ها (when)، هرچند می‌توان نگهبان‌ها را با بندهای caseیی که مقادیر ساده دارند هم به کار برد. این موضوع در ادامه نشان داده شده است:

Animal animal = GetAnimal();

switch(animal)
{
    case Dog canine:
    case Coyote canine:
        canine.Bark();
        break;
    case Cat cat when cat.HasOnly8Lives():
        cat.IsCareful();
        cat.Meow();
        break;
    case Cat cat:
        cat.Meow();
        break;
}
  • بند default اختیاری است، اما معمولاً مطلوب است.
  • دستور break برای هر بند case غیرخالی الزامی است.
  • بدیهی است که نوع همه‌ی آرگومان‌های برچسب‌های case باید از نوع آرگومان switch مشتق شده باشد. آرگومان switch از نوع Object بدیهی است که گسترده‌ترین دامنه را فراهم می‌کند.
  • عبارت نگهبان می‌تواند هر چیزی در محدوده را شامل شود، نه فقط اعضای آرگومان case.
  • چند case با آرگومان‌های متفاوت می‌توانند به یک بلوک کد یکسان اشاره کنند.

مستندات دستور switch مقدمه‌ای برای دستورهای switch ارائه می‌دهد.

ویرایش از طریق GitHub این پیوند در پنجره یا زبانه‌ی جدیدی باز می‌شود

دستورات switch را یاد بگیرید

تمرین کردن قفل شده است

برای تمرین دستورات switch قفل 6 تمرین دیگر را باز کنید