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 و_ بشكل مباشر.