C# Programming

إتقان مقارنة السلاسل النصية في جمل switch في C#

Spread the love

محتويات الجدول

فهم جمل switch

توفر جملة switch طريقة منظمة لاختيار كتلة من التعليمات البرمجية لتنفيذها بناءً على قيمة تعبير ما. وهي بديل أكثر كفاءة لسلاسل if-else if الطويلة عند التعامل مع قيم متعددة محتملة. التركيب الأساسي هو:


switch (expression)
{
    case value1:
        // التعليمات البرمجية التي سيتم تنفيذها إذا كان expression == value1
        break;
    case value2:
        // التعليمات البرمجية التي سيتم تنفيذها إذا كان expression == value2
        break;
    default:
        // التعليمات البرمجية التي سيتم تنفيذها إذا لم تتطابق أي حالة
        break;
}

جملة break أساسية؛ فهي تمنع “السقوط” إلى الحالات اللاحقة. بدونها، يستمر التنفيذ إلى الحالة التالية حتى لو تطابقت الحالة الحالية.

استخدام السلاسل النصية في جمل switch في C#

قبل C# 8، كان استخدام السلاسل النصية في جمل switch يتطلب حلولاً بديلة معقدة. أدخل C# 8 مطابقة الأنماط، مما أتاح مقارنات سلاسل نصية مباشرة داخل جمل switch، مما حسّن بشكل كبير من سهولة قراءة التعليمات البرمجية وصيانتها.


string day = "Monday";

switch (day)
{
    case "Monday":
        Console.WriteLine("بداية أسبوع العمل!");
        break;
    case "Tuesday":
    case "Wednesday":
    case "Thursday":
        Console.WriteLine("منتصف أسبوع العمل!");
        break;
    case "Friday":
        Console.WriteLine("عطلة نهاية الأسبوع تقترب!");
        break;
    case "Saturday":
    case "Sunday":
        Console.WriteLine("وقت عطلة نهاية الأسبوع!");
        break;
    default:
        Console.WriteLine("تم إدخال يوم غير صالح.");
        break;
}

يوضح هذا المثال كيفية التعامل بكفاءة مع قيم سلاسل نصية متنوعة. لاحظ القدرة على تجميع حالات متعددة بدون جمل if متداخلة.

حساسية الأحرف الكبيرة والصغيرة

مقارنات السلاسل النصية في جمل switch في C# حساسة لحالة الأحرف. للمقارنات غير الحساسة لحالة الأحرف، قم بتحويل السلسلة النصية إلى أحرف صغيرة (أو كبيرة) قبل المقارنة:


string day = "monday"; 

switch (day.ToLower()) 
{
    case "monday":
        Console.WriteLine("بداية أسبوع العمل!");
        break;
    // ... حالات أخرى ...
}

تعبيرات switch لتحسين القابلية على القراءة

أدخل C# 8 أيضًا تعبيرات switch، مما يوفر بناء جملة أكثر إيجازًا. يصبح المثال السابق:


string day = "Monday";
string message = day switch
{
    "Monday" => "بداية أسبوع العمل!",
    "Tuesday", "Wednesday", "Thursday" => "منتصف أسبوع العمل!",
    "Friday" => "عطلة نهاية الأسبوع تقترب!",
    "Saturday", "Sunday" => "وقت عطلة نهاية الأسبوع!",
    _ => "تم إدخال يوم غير صالح." 
};

Console.WriteLine(message);

عادةً ما تُفضل تعبيرات switch لإيجازها وتحسين قابليتها على القراءة، خاصةً مع وجود حالات عديدة.

الخلاصة

تبسيط مطابقة الأنماط في C# 8 لاستخدام السلاسل النصية في جمل switch، مما يحسن من سهولة قراءة التعليمات البرمجية وصيانتها مقارنة بالنهج القديمة if-else if. تذكر حساسية حالة الأحرف والنظر في استخدام تعبيرات switch لكتابة تعليمات برمجية أكثر أناقة.

الأسئلة الشائعة

  • س: هل هناك حدود لطول السلاسل النصية في جمل switch؟ ج: لا، لا يوجد حد جوهري. قد يكون للسلاسل النصية الطويلة جدًا تأثير طفيف على الأداء، لكنه عادةً ما يكون ضئيلاً.
  • س: ماذا يحدث إذا أهملت جملة break؟ ج: يحدث السقوط؛ يستمر التنفيذ إلى الحالة التالية، مما قد يتسبب في سلوك غير متوقع. أضف دائمًا جمل break (أو استخدم تعبيرات switch).
  • س: هل تعبيرات switch أسرع دائمًا؟ ج: يكون فرق الأداء ضئيلاً عادةً. أعط الأولوية لقابلية القراءة والصيانة؛ غالبًا ما تؤدي تعبيرات switch إلى تعليمات برمجية أوضح.

اترك تعليقاً

لن يتم نشر عنوان بريدك الإلكتروني. الحقول الإلزامية مشار إليها بـ *