خاصية 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
، مما يجعل التعليمات البرمجية أكثر قابلية للقراءة والصيانة