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 الكامل بالعربي.