1. switch case
التقليدي
الـ switch case
التقليدي بيتعامل مع شروط أكتر بشكل تدريجي وبيحتاج شوية كتابة أكتر.
مثال:
int number = 2;
string result;
switch (number)
{
case 1:
result = "One";
break;
case 2:
result = "Two";
break;
case 3:
result = "Three";
break;
default:
result = "Unknown";
break;
}
Console.WriteLine(result); // هتطلع: Two
في المثال ده:
- لو الرقم كان 2 هيطلع “Two”.
- لو الرقم مش 1، 2، أو 3 هيطلع “Unknown”.
- في النهاية بنستخدم
break
علشان نخرج من الـswitch
.
2. switch expression
الحديثة
أما في switch expression
، إحنا بنقدر نكتب code بشكل أكتر اختصارًا وبطريقة أنظف.
نفس المثال باستخدام switch expression
:
int number = 2;
var result = number switch
{
1 => "One",
2 => "Two",
3 => "Three",
_ => "Unknown"
};
Console.WriteLine(result); // هتطلع: Two
في المثال ده:
- إحنا مش محتاجين نكتب
break
، لأنه بيتم تحديد النتيجة على طول. - بنستخدم
_
كـ “catch-all” للـ default.
الفرق بين الاتنين:
- الاختصار: في الـ
switch expression
بنكتب كود أقصر وأوضح. - الـ
break
: في الـswitch case
لازم تستخدمbreak
بعد كل حالة عشان توقف الـ case، لكن في الـswitch expression
مفيش داعي لـbreak
، لأنه بيرجع النتيجة بشكل مباشر. - الأنماط المتقدمة: في الـ
switch expression
تقدر تستخدم أنماط زيwhen
أو الـ types مثلاً، زي ما هنشوف في المثال الجاي.
مثال آخر باستخدام switch expression
مع when
:
object obj = 42;
var result = obj switch
{
int n when n > 0 => "Positive Integer",
int n when n < 0 => "Negative Integer",
string s => "String",
_ => "Other"
};
Console.WriteLine(result); // هتطلع: Positive Integer
هنا بنقدر نحدد شرط زي when n > 0
، وده مش ممكن في الـ switch case
التقليدي إلا لو كتبنا شرط داخل الـ case نفسه.
باختصار، switch expression
بتدي كتابة أكتر نظافة واختصار، وبتتيح استخدام أنماط متقدمة زي when
و_
بشكل مباشر.