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

التقييم المختصر

جزء من قسم Logic & Flow في رحلة C# على Coddy — الدرس 36 من 66.

التقييم قصير الدائرة (Short-circuit evaluation) هو تقنية تحسين في لغة C# حيث يتم تقييم المعامل الثاني لمعاملي AND المنطقي (&&) و OR المنطقي (||) فقط عند الضرورة.

بالنسبة لعملية AND المنطقية (&&)، إذا كان المعامل الأول هو false، فستكون النتيجة دائماً false بغض النظر عن المعامل الثاني:

bool result = false && SomeMethod();

في هذا المثال، لن يتم استدعاء SomeMethod() لأن المعامل الأول هو بالفعل false.

بالنسبة لعملية OR المنطقية (||)، إذا كان المعامل الأول هو true، فستكون النتيجة دائماً true بغض النظر عن المعامل الثاني:

bool result = true || SomeMethod();

هنا، لن يتم استدعاء SomeMethod() لأن المعامل الأول هو بالفعل true.

يمكن استخدام هذا السلوك لمنع الأخطاء، مثل التحقق مما إذا كان الكائن (object) فارغاً (null) قبل الوصول إلى خصائصه:

// آمن - إذا كان student فارغاً (null)، فلن يتم تقييم الجانب الأيمن
if (student != null && student.Grade > 70)
{
    Console.WriteLine("Student passed!");
}
challenge icon

التحدي

سهل

أنشئ طريقة (method) باسم ProcessUserInput تأخذ وسيطين:

  • سلسلة نصية (input)
  • عدد صحيح (minLength)

يجب أن تقوم الطريقة بـ:

  1. التحقق مما إذا كان المدخل ليس null
  2. التحقق مما إذا كان طول المدخل على الأقل minLength
  3. فقط إذا تحقق الشرطان معاً، اطبع "Valid input: " متبوعاً بالمدخل
  4. إذا فشل أي من الشرطين، اطبع "Invalid input"

استخدم التقييم قصير الدائرة (short-circuit evaluation) لمنع حدوث أي NullReferenceException محتمل.

ورقة مرجعية

التقييم قصير الدائرة (Short-circuit evaluation) هو تقنية تحسين حيث يتم تقييم المعامل الثاني للمعاملات المنطقية فقط عند الضرورة.

بالنسبة لـ AND المنطقية (&&)، إذا كان المعامل الأول false، فلن يتم تقييم المعامل الثاني:

bool result = false && SomeMethod(); // لن يتم استدعاء SomeMethod()

بالنسبة لـ OR المنطقية (||)، إذا كان المعامل الأول true، فلن يتم تقييم المعامل الثاني:

bool result = true || SomeMethod(); // لن يتم استدعاء SomeMethod()

هذا يمنع الأخطاء عن طريق التحقق من الشروط بالترتيب:

// آمن - إذا كان student هو null، فلن يتم الوصول إلى student.Grade
if (student != null && student.Grade > 70)
{
    Console.WriteLine("Student passed!");
}

جرّب بنفسك

using System;

class ProcessUserInput
{
    public static void processUserInput(string input, int minLength)
    {
        // اكتب الكود الخاص بك هنا
    }
}
quiz iconاختبر نفسك

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

جميع دروس Logic & Flow