English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

دليل أساسي C#

دليل متقدم C#

C# موجه إلى الكائنات (OOP)

جملة الشرط switch C#

عندما تحتاج إلى اختبار متغير بناءً على ثلاثة أو أكثر من الحالات، يمكنك استخدام جملة switch بدلاً من جملة if else. هنا، ستعرف جملة switch وكيفية استخدامها بشكل فعال في برنامج C#.

هذه هي نحو جملة switch بشكل عام.

 النحو:

switch(تعبير تطابق/متغير)
{
    case قيمة-ثابتة:
        //جملة للتنفيذ;
        break;
    default: 
        //جملة للتنفيذ;
        break;
}

جملة switch تبدأ بكلمة المفتاح switch، وتحتوي على تعبير تطابق أو متغير داخل أقواس switch(تعبير تطابق match expression). سيتم اختبار نتيجة هذا التعبير أو المتغير بناءً على حالات case المحددة داخل الأقواس المفتوحة {} . يجب تحديد case باستخدام قيمة ثابتة فريدة، وتنتهي بفاصلة العطف : . تشمل كل حالة جملة أو أكثر من الجمل لتنفيذها. إذا كانت القيمة الثابتة تساوي قيمة التعبير أو المتغير، يتم تنفيذ case. يمكن أن تحتوي جملة switch أيضًا على علامة default اختيارية. إذا لم يتم تنفيذ أي case، يتم تنفيذ علامة default. يتم استخدام كلمات المفتاح break، return أو goto للخروج من حالة switch.

هذا المثال يوضح جملة switch بسيطة.

int x = 10;
switch (x)
{ 
    case 5:
        Console.WriteLine("قيمة x هي 5");
        break;
    case 10:
        Console.WriteLine("قيمة x هي 10");
        break;
    case 15:
        Console.WriteLine("قيمة x هي 15");
        break;
    default:
        Console.WriteLine("قيمة غير معروفة");
        break;
}
الناتج:
قيمة x هي 10

فيها، جملة switch (x) تحتوي على متغير x، والقيمة الخاصة به ستتطابق مع كل حالة القيمة تتطابق مع القيمة. تحتوي جملة switch على حالات ثابتة 5،10 و15 الثلاثة. كما تحتوي أيضًا على ملصق default، إذا لم تتطابق أي حالة مع switch توافق متغير/تعبير، سيتم تنفيذ هذا الملصق. تبدأ كل حالة بعد : وتحتوي على جملة يتم تنفيذها. قيمة X تتطابق مع القيمة في الحالة الثانية وهي 10: الإجابة عن التوافق، القيمة الم输出的 هي قيمة x وهي 10.

يمكن أن تحتوي جملة switch على تعبير لا يكون فارغًا ويستطيع العودة إلى أي نوع من char،string،bool،int أو enum.

يمكن أن تحتوي جملة switch على تعبير يمكن اختباره عند التنفيذ لكل حالة.

int x = 125;
switch (x % 2)
{ 
    case 0:
        Console.WriteLine($"{x} هو عدد زوجي");
        break;
    case 1:
        Console.WriteLine($"{x} هو عدد غير زوجي");
        break;
}
الناتج:
125 هو عدد غير زوجي

حالة Switch Case

حالة Switch Case يجب أن تكون قيمة ثابتة فريدة. يمكن أن تكون bool،char،string،integer،enum أو نوع يمكن أن يكون null.

ملاحظة

بعد c# 7.0، يمكن لحالة switch case أن تحتوي على قيم غير فريدة. في هذه الحالة، سيتم تنفيذ الحالة الأولى التي تتطابق.

اعلم بالجملة البسيطة التالية لـ switch.

string statementType = "switch";
switch (statementType)
{
    حالة "if.else":
        Console.WriteLine("جملة if...else");
        break;
    حالة "عميل ثنائي":
        Console.WriteLine("عميل ثنائي");
        break;
    حالة "switch":
        Console.WriteLine("جملة switch");
        break;
}
الناتج:
جملة switch

يمكن الجمع بين عدة حالات لتنفيذ نفس الجملة.

int x = 5;
switch (x)
{ 
    case 1:
        Console.WriteLine("x = 1");
        break;
    case 2:
        Console.WriteLine("x = 2");
        break;
    case 4:
    case 5:
        Console.WriteLine("x = 4 or x = 5");
        break;
    default:
        Console.WriteLine("x > 5");
        break;
}

يجب أن يتضمن كل case استخدام break أو return أو goto أو طريقة أخرى للخروج من case، لضمان خروج التحكم من case واحد وليس من case افتراضي.

فيما يلي استخدام مفتاح return.

static void Main(string[] args)
{
    int x = 125;
    Console.Write(isOdd(x) ? "even value" : "odd value");
}
static bool isOdd(int i, int j)
{
    switch (x % 2)
    { 
        case 0:
            return true;
        case 1:
            return false;
        default:
            return false;
    }
    
    return false;
}
الناتج:
العدد غير المثلي

إذا لم يكن هناك جملة break أو return أو goto أو switch case لها نفس القيمة الثابتة، فإن ذلك سيؤدي إلى خطأ في وقت التجميع.

int x = 1;
switch (x)
{ 
    case 0:
        Console.WriteLine($"{x} is even value");
        break;
    case 1:
        Console.WriteLine($"{x} is odd Value");
        break;
    case 1: // خطأ - لا يمكن للتحكم في الالتصاق بالعلامة case 1: لأدخل علامة case أخرى
        Console.WriteLine($"{x} is odd Value");
    defaut:
        Console.WriteLine($"{x} is odd Value");
        break;
}

جملة switch مدمجة

يمكن استخدام جملة switch داخل جملة switch أخرى.

int j = 5;
switch (j)
{
    case 5:
        Console.WriteLine(5);
        switch (j - 1)
        {
            case 4:
            Console.WriteLine(4);
            switch (j - 2)
            {
                case 3:
                Console.WriteLine(3);
                break;
            }
            break;
        }
        break;
    case 10:
        Console.WriteLine(10);
        break;
    case 15:
        Console.WriteLine(15);
        break;
    default:
        Console.WriteLine(100);
        break;
}
الناتج:
5 
4 
3
 النقاط الرئيسية التي يجب تذكرها:
  1. جملة switch هي بديل لجملة if else.

  2. يتم اختبار جملة العبارة/ال متغير المحددة كcase في جملة switch.

  3. يجب أن يحتوي case على كلمات المفتاح break أو return أو goto لكي يتم الخروج من case.

  4. يمكن أن يحتوي switch على علامة default اختيارية، ويتم تنفيذ هذه العلامة عند عدم تنفيذ case.

  5. سيقدم محول C# رسالة خطأ حول نقص : في case، وقيمة الثابتة، وينتهي case.

  6. من إصدار C#7.0، يمكن أن يحتوي switch على قيم غير فريدة. في هذه الحالة، سيتم تنفيذ الحالة الأولى التي تتطابق.