التبديل (مرجع C#)

الكشف switch هو بيان عنصر تحكم الذي يعالج العديد من التحديدات والتعدادات بتمرير التحكم إلى أحد الكشوفات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 يمكن أن يتضمن أي عدد من مثيلات case , ولكن لا يمكن لحالتي كشوف أن تملك نفس القيمة. تنفيذ لنص الكشف يبدأ في الكشف المحدد وحتى كشف break لينتقل خارج نطاق النص الأصلي لـ case . عبارة الانتقال السريع مثل break مطلوبة بعد كل كتلة case, بما في ذلك الكتلة الأخيرة سواء كان الكشف case أو كشف default. مع استثناء واحد ، (بعكس C++ في كشف switch كشف) ، C# لا يدعم السقوط الضمني من خلال من تسمية حالة واحدة إلى أخرى. استثناء واحد إذا كان الكشف case لا يحتوي على تعليمات برمجية.

إذا كان لا يوجد تعبير في حالة تطابق قيمة لمفتاح التبديل، فإنه يتم نقل السيطرة للبيانات التي تتبع التسمية الاختيارية 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، يتم استخدامه لحالات التبديل. لاحظ أنه يمكنك أيضاً استخدام سلسلة متغير, s، مباشرة. في هذه الحالة، يمكنك استخدام تبديل الحالات مثل هذه:
switch(s)
{
    case "1":
        // ...
    case "2":
        // ...
}

يبين النموذج التالي التي تقع من حالة تسمية واحدة إلى أخرى مسموح بها لتسميات الحالة الفارغة.

    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.

مواصفات لغة #C

لمزيد من المعلومات، راجع مواصفات لغة #C. مواصفات اللغة هي المصدر النهائي لبناء جملة C# واستخدامها.

راجع أيضًا:

المرجع

الكلمات الأساسية لـ #C

The switch Statement

if-else (مرجع #C)

المبادئ

دليل البرمجة لـ #C

موارد أخرى

مرجع C#‎