0Pricing
C# Academy · درس

عوامل الدمج عند null

استخدموا ?? و??= لتوفير قيم بديلة

عوامل الدمج عند null درس مجاني في C# Academy على CoddyKit. هذا هو الدرس 3 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في C# Academy، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة C# Academy 4 دروس في المجموع.

العامل ??

يعيد عامل دمج القيم null ?? المعامل الأيسر إذا لم يكن null، وإلا يعيد المعامل الأيمن. وهو طريقة مختصرة لتوفير قيمة بديلة.

using System;

class Program {
    static void Main() {
        int? maybe = null;
        int value = maybe ?? -1;
        Console.WriteLine(value);
    }
}

يختار ?? أول قيمة غير null

إذا احتوى الطرف الأيسر على قيمة، فستُستخدم تلك القيمة ويُتجاهل الطرف الأيمن.

using System;

class Program {
    static void Main() {
        int? a = 7;
        Console.WriteLine(a ?? 0);
    }
}

استخدام ?? مع الأنواع المرجعية

يعمل ?? أيضًا مع الأنواع المرجعية مثل string، فيوفر نصًا افتراضيًا عندما تكون القيمة null.

using System;

class Program {
    static void Main() {
        string name = null;
        Console.WriteLine(name ?? "Guest");
    }
}

تسلسل ??

يمكنك تسلسل عدة قيم بديلة؛ وستُستخدم أول قيمة غير null.

using System;

class Program {
    static void Main() {
        string a = null, c = "third";
        string b = null;
        Console.WriteLine(a ?? b ?? c ?? "last");
    }
}

‏?? يعيد النوع الأساسي

عندما يكون الطرف الأيسر int? والطرف الأيمن int، تكون النتيجة int عاديًا، إذ لم يعد من الممكن أن تكون القيمة null.

using System;

class Program {
    static void Main() {
        int? maybe = null;
        int sure = maybe ?? 0;
        Console.WriteLine(sure + 5);
    }
}

عامل الإسناد ??=

يُسنِد عامل الدمج مع null ‏??= قيمة الطرف الأيمن فقط إذا كانت قيمة الطرف الأيسر الحالية هي null.

using System;

class Program {
    static void Main() {
        int? count = null;
        count ??= 10;
        Console.WriteLine(count);
    }
}

‏??= يترك القيم الموجودة

إذا كان المتغير يحتوي بالفعل على قيمة، فلن يفعل ??= شيئًا.

using System;

class Program {
    static void Main() {
        string config = "custom";
        config ??= "default";
        Console.WriteLine(config);
    }
}

التهيئة الكسولة باستخدام ??=

يُعد ??= مناسبًا تمامًا لتعيين قيمة في المرة الأولى والاحتفاظ بها بعد ذلك.

using System;

class Program {
    static string cache = null;
    static string GetData() {
        cache ??= "loaded";
        return cache;
    }
    static void Main() {
        Console.WriteLine(GetData());
        Console.WriteLine(GetData());
    }
}

‏?? مقابل GetValueOrDefault

يوفّر كلاهما قيمًا بديلة، لكن ?? أكثر مرونة؛ فهو يعمل مع الأنواع المرجعية، ويسمح بأن تكون القيمة البديلة أي تعبير.

using System;

class Program {
    static void Main() {
        int? n = null;
        Console.WriteLine(n ?? 5);
        Console.WriteLine(n.GetValueOrDefault(5));
    }
}

‏?? في وسيطات الأساليب

استخدم ?? مباشرةً لتوفير قيمة افتراضية في الموضع الذي تحتاج فيه إلى قيمة.

using System;

class Program {
    static void Greet(string name) {
        Console.WriteLine("Hello, " + name);
    }
    static void Main() {
        string input = null;
        Greet(input ?? "friend");
    }
}

السلوك قصير الدارة

لا يُقيَّم الطرف الأيمن من ?? إلا عندما تكون قيمة الطرف الأيسر هي null، على نحو مشابه للتقييم قصير الدارة.

using System;

class Program {
    static int Compute() {
        Console.WriteLine("Computed");
        return 42;
    }
    static void Main() {
        int? known = 1;
        int result = known ?? Compute();
        Console.WriteLine(result);
    }
}

تحقق سريع

اختبر مدى فهمك لعوامل الدمج مع null.

مراجعة

يعيد العامل ?? قيمة الطرف الأيسر إذا لم تكن null، وإلا يعيد قيمة الطرف الأيمن، ويمكن ربطه بعوامل أخرى. ويتخلص نوع النتيجة من قابلية null عندما تُوفَّر قيمة بديلة غير null.

يُسنِد ??= القيمة فقط عندما يكون الهدف هو null، مما يجعله مناسبًا للقيم الافتراضية والتهيئة الكسولة. ولا يُقيّم كلا العاملين الطرف الأيمن إلا عند الحاجة.

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

هل درس «عوامل الدمج عند null» مجاني؟

نعم — نص درس «عوامل الدمج عند null» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة C# Academy، انتقل إلى CoddyKit PRO. تتضمن دورة C# Academy 4 دروس في المجموع.

ماذا ستتعلم في «عوامل الدمج عند null»؟

استخدموا ?? و??= لتوفير قيم بديلة تتمرن على C# Academy مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.

هل أحتاج إلى خبرة سابقة لأبدأ C# Academy؟

لا تُشترط خبرة سابقة. C# Academy على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 3 من أصل 4.

كم من الوقت يستغرق درس «عوامل الدمج عند null»؟

معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.

هل يمكنني كتابة وتشغيل أكواد في درس C# Academy هذا؟

نعم. كل درس في C# Academy يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.

جميع الدروس في هذه الدورة

  1. التعرّف على أنواع القيم القابلة للإفراغ
  2. خاصيتا HasValue وValue
  3. عوامل الدمج عند null
  4. القيم القابلة للإفراغ في العمليات الحسابية
← العودة إلى C# Academy