Menu
Coddy logo textTech
flag Ar iconالعربيةdown icon

مقارنة بين If و Switch

جزء من قسم Logic & Flow في رحلة 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 labels) معًا — وهذا ما يسمى fall-through. عندما لا يوجد كود بين عدة حالات، فإنها جميعًا تنفذ نفس الكتلة البرمجية:

char dayCode = 'S';

switch (dayCode)
{
    case 'M':
    case 'T':
    case 'W':
    case 'R':
    case 'F':
        Console.WriteLine("Weekday");
        break;
    case 'S':
    case 'U':
        Console.WriteLine("Weekend");
        break;
    default:
        Console.WriteLine("Unknown day");
        break;
}

هنا، ينتقل كل من 'S' و 'U' إلى نفس استدعاء Console.WriteLine("Weekend"). تعد تكديس تسميات الحالات الفارغة مثل هذه هي الطريقة القياسية لتجميع الحالات في C#.

challenge icon

التحدي

متوسط

أنشئ طريقة تسمى convertGradeToPoints تقوم بما يلي:

  1. تأخذ درجة حرفية كمعامل نصي (string)
  2. تحولها إلى نقطة درجة رقمية باستخدام نهجي switch و if-else
  3. يجب أن تنفذ الطريقة كلا النهجين وتعيد نتيجة تنفيذ switch
  4. استخدم تحويلات الدرجات هذه:
    • "A" أو "a" = 4
    • "B" أو "b" = 3
    • "C" أو "c" = 2
    • "D" أو "d" = 1
    • "F" أو "f" = 0
    • أي إدخال آخر = -1

ورقة مرجعية

توفر لغة 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 تجميع حالات متعددة (fall-through) لمشاركة نفس النتيجة عن طريق تكديس تسميات الحالات (case labels):

char dayCode = 'S';

switch (dayCode)
{
    case 'M':
    case 'T':
    case 'W':
    case 'F':
        Console.WriteLine("Weekday");
        break;
    case 'S':
    case 'U':
        Console.WriteLine("Weekend");
        break;
    default:
        Console.WriteLine("Unknown day");
        break;
}

جرّب بنفسك

public class ConvertGradeToPoints
{
    // قم بتنفيذ دالة convertGradeToPoints
    public static int convertGradeToPoints(string letterGrade)
    {
        // اكتب الكود الخاص بك هنا
        
    }
}
quiz iconاختبر نفسك

يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.

جميع دروس Logic & Flow