خاصية switch في لغة C# هي عبارة تحكم تسمح لك باختيار تنفيذ جزء من التعليمات البرمجية بناءً على قيمة متغير أو تعبير. تُستخدم عادةً كبديل أنظف وأكثر كفاءة لسلسلة طويلة من عبارات if-else if.
بنية switch الأساسية:
C#
switch (التعبير){ case القيمة_1: // تنفيذ التعليمات البرمجية إذا كان التعبير يساوي القيمة_1 break; case القيمة_2: // تنفيذ التعليمات البرمجية إذا كان التعبير يساوي القيمة_2 break; case القيمة_3: // تنفيذ التعليمات البرمجية إذا كان التعبير يساوي القيمة_3 break; default: // تنفيذ التعليمات البرمجية إذا لم يتطابق التعبير مع أي من القيم السابقة (اختياري) break;}التعبير: هو المتغير أو التعبير الذي سيتم تقييمه. يجب أن يكون من نوع يمكن مقارنته (مثلint،string،char،enum).case القيمة_n: تحدد قيمة معينة سيتم مقارنةالتعبيربها. إذا تطابقالتعبيرمع إحدى هذه القيم، سيتم تنفيذ التعليمات البرمجية الموجودة داخل هذاcase.break;: تُستخدم للخروج من عبارةswitchبعد تنفيذ التعليمات البرمجية المطابقة. مهم جدًا: في معظم الحالات، يجب أن يكون هناكbreakفي نهاية كلcase. إذا لم يكن موجودًا، سيستمر التنفيذ فيcaseالتالي (يُعرف هذا باسم "المرور")، وهو سلوك قد يكون غير مرغوب فيه في كثير من الأحيان.default:: (اختياري) يُستخدم لتحديد التعليمات البرمجية التي سيتم تنفيذها إذا لم يتطابقالتعبيرمع أي من قيمcaseالسابقة.
مثال بسيط:
C#
int dayOfWeek = 3;string dayName;
switch (dayOfWeek){ case 1: dayName = "الاثنين"; break; case 2: dayName = "الثلاثاء"; break; case 3: dayName = "الأربعاء"; break; case 4: dayName = "الخميس"; break; case 5: dayName = "الجمعة"; break; case 6: dayName = "السبت"; break; case 7: dayName = "الأحد"; break; default: dayName = "رقم يوم غير صالح"; break;}
Console.WriteLine($"اليوم هو: {dayName}"); // سيطبع: اليوم هو: الأربعاءميزات إضافية في C#:
- الأنماط (Patterns) في
switch(C# 7.0 والإصدارات الأحدث): تسمح لك باستخدام أنماط أكثر تعقيدًا في حالاتcase، مثل التحقق من أنواع المتغيرات أو القيم في نطاقات معينة.
C#
object obj = 123;
switch (obj){ case int i when i > 100: Console.WriteLine("عدد صحيح أكبر من 100"); break; case string s: Console.WriteLine("نص"); break; case null: Console.WriteLine("قيمة فارغة"); break; default: Console.WriteLine("نوع غير معروف"); break;}- التعبيرات
switch(C# 8.0 والإصدارات الأحدث): توفر صيغة أكثر اختصارًا ووضوحًا لـswitch، تُستخدم غالبًا في تعيين القيم.
C#
int dayOfWeek = 3;
string dayName = dayOfWeek switch{ 1 => "الاثنين", 2 => "الثلاثاء", 3 => "الأربعاء", 4 => "الخميس", 5 => "الجمعة", 6 => "السبت", 7 => "الأحد", _ => "رقم يوم غير صالح" // _ يمثل الحالة الافتراضية};
Console.WriteLine($"اليوم هو: {dayName}"); // سيطبع: اليوم هو: الأربعاءمتى تستخدم switch؟
- عندما يكون لديك متغير أو تعبير واحد تريد اختباره مقابل عدة قيم ثابتة.
- عندما تريد تجنب سلسلة طويلة من عبارات
if-else if، مما يجعل التعليمات البرمجية أكثر قابلية للقراءة والصيانة
