مقارنة بين If و Switch
جزء من قسم المنطق وتدفق التنفيذ في رحلة C# على Coddy. الدرس 10 من 66.
توفر C# طريقتين أساسيتين للتعامل مع الشروط المتعددة: عبارات if-else وعبارات switch. ولكل منهما نقاط قوة في سيناريوهات مختلفة.
عبارات if-else مرنة ويمكنها التعامل مع أي نوع من الشروط:
string grade = "B";
if (grade == "A")
{
Console.WriteLine("Excellent");
}
else if (grade == "B")
{
Console.WriteLine("Good");
}
else if (grade == "C")
{
Console.WriteLine("Satisfactory");
}
else
{
Console.WriteLine("Needs improvement");
}تكون عبارات switch أكثر وضوحًا عند مقارنة متغير واحد بعدة قيم ثابتة:
string grade = "B";
switch (grade)
{
case "A":
Console.WriteLine("Excellent");
break;
case "B":
Console.WriteLine("Good");
break;
case "C":
Console.WriteLine("Satisfactory");
break;
default:
Console.WriteLine("Needs improvement");
break;
}يمكن لـ Switch تجميع حالات متعددة معًا (الانتقال التلقائي) بحيث تشترك في النتيجة نفسها. ضع تسميات case واحدة تلو الأخرى من دون أي تعليمات برمجية بينها، واستخدم break واحدة فقط في النهاية:
string grade = "B";
switch (grade)
{
case "A":
case "a":
Console.WriteLine("Excellent - 4 points");
break;
case "B":
case "b":
Console.WriteLine("Good - 3 points");
break;
case "C":
case "c":
Console.WriteLine("Satisfactory - 2 points");
break;
default:
Console.WriteLine("Needs improvement");
break;
}هنا، both "B" و"b" ينتقلان إلى الكتلة نفسها ويطبعان "Good - 3 points". هذا النمط مفيد كلما أردت أن تنتج المدخلات بالأحرف الكبيرة والأحرف الصغيرة، أو أي مجموعة من القيم، النتيجة نفسها.
يمكن لـ switch أيضًا تجميع الحالات ذات التسميات المختلفة التي تشترك في نتيجة واحدة:
char dayCode = 'M';
switch (dayCode)
{
case 'M':
Console.WriteLine("Monday");
break;
case 'T':
Console.WriteLine("Tuesday or Thursday");
break;
case 'W':
Console.WriteLine("Wednesday");
break;
case 'F':
Console.WriteLine("Friday");
break;
default:
Console.WriteLine("Unknown day");
break;
}التحدي
متوسطأنشئ method تُسمّى convertGradeToPoints بحيث:
- تأخذ تقديرًا حرفيًا كمعامل من نوع string
- تحوّله إلى نقاط تقدير رقمية باستخدام أسلوبي switch وif-else
- يجب أن تُنفّذ method كلا الأسلوبين وأن تُرجع نتيجة تنفيذ switch
- استخدم تحويلات التقديرات التالية:
- "A" أو "a" = 4
- "B" أو "b" = 3
- "C" أو "c" = 2
- "D" أو "d" = 1
- "F" أو "f" = 0
- أي إدخال آخر = -1
جرّب بنفسك
public class ConvertGradeToPoints
{
// قم بتنفيذ الدالة convertGradeToPoints
public static int convertGradeToPoints(string letterGrade)
{
// اكتب الكود الخاص بك هنا
}
}يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.
جميع دروس المنطق وتدفق التنفيذ
1المصفوفات متعددة الأبعاد
أساسيات المصفوفات ثنائية الأبعادتعريف وتهيئة المصفوفات ثنائية الأبعادالوصول إلى عناصر المصفوفة ثنائية الأبعادالحلقات المتداخلة مع المصفوفات ثنائية الأبعادالمصفوفات المتعرجة (Jagged Arrays)عمليات المصفوفات الشائعةمراجعة - المصفوفات متعددة الأبعاد4تقنيات التحكم في التدفق
الإرجاع المبكرشروط الحمايةجمل القفز (goto)Break و Continueتسطيح الشروط المتداخلة7المعاملات المنطقية المتقدمة
التقييم المختصرالمعاملات المنطقية الشرطيةأولوية المعاملاتمراجعة - المعاملات المتقدمة2اتخاذ القرارات المتقدم
الشروط المتعددةالمنطق البولياني المعقدمقارنة بين If و Switchجمل Switch المتداخلةمراجعة - القرارات المتقدمة5معالجة الاستثناءات
أساسيات Try-Catchأنواع الاستثناءاتكتل Catch المتعددةالتعامل مع الملفاتكتلة FinallyUsing مقابل Try-Finallyاستثناءات مخصصةمراجعة - معالجة الأخطاء8نظام تحليل البيانات
إعداد جمع البياناتمنطق إدخال البيانات11HashSet الجزء الأول
ما هو الـ HashSet؟إضافة عنصرحذف عنصرالتحقق من وجود عنصرالفراغ والحجمملخص - HashSet3تحسينات الحلقات التكرارية
أداء الحلقات التكراريةالتكرار عبر البيانات المعقدةأنواع الحلقات التكراريةإعادة هيكلة الحلقات التكراريةملخص - الحلقات المحسنة6التعامل مع الـ Null
أساسيات الـ Null Referenceأنواع القيم القابلة للـ Nullأنماط التحقق من الـ Nullالبرمجة الدفاعيةملخص - أمان الـ Nullتدرّب بنفسك: مترجم C# عبر الإنترنت