تخطَّ إلى المحتوى

switch (تعبير)

تعبير switch switch (تعبير)

تعبير switch يحسب قيمة واحدة عبر مطابقة أنماط — بديل أقصر لجملة switch التقليدية عندما تريد قيمة لا تنفيذ أوامر.

كل ذراع في تعبير switch يتكوّن من نمط، ثم رمز `=>`، ثم تعبير — مفصولة بفواصل بدل `case` و`break`. النتيجة هي قيمة أول ذراع يطابق نمطه، مقروءة من الأعلى للأسفل.

يدعم أنماطًا متعددة: ثابت، نوع، خاصية، علاقة (`>=`)، ونمط التجاهل `_` الذي يطابق أي شيء لم تغطّه الأذرع السابقة. يحذّر المترجم إذا لم يكن التعبير شاملًا لكل الاحتمالات.

الصياغة

result = value switch
{
    pattern1 => expr1,
    pattern2 => expr2,
    _ => defaultExpr
};

📄 مثال

string Grade(int score) => score switch
{
    >= 90 => "ممتاز",
    >= 75 => "جيد جدًا",
    >= 60 => "مقبول",
    _     => "راسب"
};

Console.WriteLine(Grade(82));   // جيد جدًا

أهم النقاط

العنصرالوظيفة
نمط ثابتيطابق قيمة محدّدة مثل 1 أو "نص"
نمط علاقة>= أو <= أو > أو < أمام رقم
نمط خاصية{ Prop: value } يفحص خصائص كائن
_ (discard)يطابق أي قيمة متبقية — يضمن الشمولية

💡 نصائح عملية

  • أضف ذراع _ دائمًا لتجنّب استثناء SwitchExpressionException وقت التشغيل عند قيمة غير متوقعة

⚠️ أخطاء شائعة

  • نسيان ذراع _ الشامل يجعل قيمًا غير متوقعة ترمي استثناءً بدل التعامل معها بأمان

خصائص ذات صلة

🎓 تريد فهم الصورة الكاملة خطوة بخطوة؟ ابدأ من مسار CSHARP الكامل بالعربي.