This article is currently in the process of being translated into Arabic (~98% done).
The switch statement
الجملة switch هي بمثابة مجموعة من جمل الشرط if. أي هي قائمة احتمالات، وعند كل احتمال يوجد إجراء ينفذ في حال تحقق الاحتمال، وفي النهاية يوجد إجراء افتراضي - وهو اختياري- ينفذ في حال لم يتم تحقق أي احتمال من قائمة الاحتمالات في الجملة switch. الشكل البسيط للجملة switch:
int number = 1;
switch(number)
{
case 0:
Console.WriteLine("The number is zero!");
break;
case 1:
Console.WriteLine("The number is one!");
break;
}
بعد الكلمة المحجوزة switch نضع المعامل (identifier), وبعد ذلك نضيف قائمة بالقيم التي نتوقع أن يحملها المعامل (identifier). لاحظ وجود الجملة (break) في نهاية كل حالة. تطب سي شارب وجود (break) للخروج من الكتلة البرمجية switch عند تحقق الشرط، بدل أن يتم تنفيذ كل الكتلة. تعتبر الجملة break هي البديل عن الكلمة return التي تكتبها في الوظيفة(function) التي تعيد قيمة.
في هذه الحالة، نستخدم نوع البيانات integer, ويمكن استخدام نوع بيانات نصية string أيضاً. كما يمكن أيضاً العمل بنفس الطريقة مع حالات متعددة. سوف نقوم بعرض ذلك في المثال التالي، حيث سنستقبل المدخلات من المستخدم ونستخدمها في كتلة switch:
Console.WriteLine("Do you enjoy C# ? (yes/no/maybe)");
string input = Console.ReadLine();
switch(input.ToLower())
{
case "yes":
case "maybe":
Console.WriteLine("Great!");
break;
case "no":
Console.WriteLine("Too bad!");
break;
}
في هذا المثال، يتم سؤال المستخدم، ونقترح علىه أن يختار أحد ثلاث إجابات. بعد ذلك نستقبل الإجابة من المستخدم ونختبرها في الكتلة switch. للتسهيل على المستخدم نقوم بتحويل النص إلى أحرف صغيرة ، حتى يتم مقارنتها مع النص المضمن في الشيفرة والذي هو بأحرف صغيرة.
ربما سيقوم المستخدم بإدخال قيمة غير متوقعة ، وفي تلك الحالة لن يكون للبرنامج أي مخرجات. وفي هذه الحالة يجب إضافة الجملة default ليتم تنفيذ ما بعدها.
Console.WriteLine("Do you enjoy C# ? (yes/no/maybe)");
string input = Console.ReadLine();
switch(input.ToLower())
{
case "yes":
case "maybe":
Console.WriteLine("Great!");
break;
case "no":
Console.WriteLine("Too bad!");
break;
default:
Console.WriteLine("I'm sorry, I don't understand that!");
break;
}
إذا لم تعد أي من الجمل الشرطية في الكتلة switch بالقيمة true ، سيكون للجملة default نصيب في التنفيذ. وكما أسلفنا فإن الجملة default هي جملة اختيارية كما رأينا في المثال السابق.