0Pricing
C# Academy · درس

التعرّف على أنواع القيم القابلة للإفراغ

صرّحوا عن int? وdouble? وافهموا Nullable

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

الأنواع القيمية لا يمكن أن تكون null

يحمل int عادةً عددًا دائمًا، ولا يمكن أن تكون قيمته null مطلقًا. لكنك قد تحتاج أحيانًا إلى تمثيل «عدم وجود قيمة»، مثل قياس مفقود.

using System;

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

قابلية null باستخدام ?

أضف ? بعد نوع قيمي لجعله قابلًا للقيمة null. يمكن لـint? أن يحمل أي قيمة من نوع int أو القيمة null.

using System;

class Program {
    static void Main() {
        int? maybe = null;
        Console.WriteLine(maybe.HasValue);
        maybe = 42;
        Console.WriteLine(maybe);
    }
}

أنواع أخرى قابلة للقيمة null

يمكن جعل أي نوع قيمي قابلًا للقيمة null، مثل double? وbool? وDateTime? وغير ذلك.

using System;

class Program {
    static void Main() {
        double? temp = null;
        bool? flag = true;
        Console.WriteLine(temp.HasValue + " " + flag);
    }
}

كتابة Nullable<T> بصيغتها الكاملة

إن int? مجرد صيغة مختصرة للبنية Nullable<int>. ويُترجم كلاهما إلى النوع نفسه تمامًا.

using System;

class Program {
    static void Main() {
        Nullable<int> a = 10;
        int? b = 10;
        Console.WriteLine(a == b);
    }
}

إسناد null

يمكنك إسناد null بحرية إلى متغير قابل للقيمة null، ثم إسناد قيمة حقيقية إليه لاحقًا.

using System;

class Program {
    static void Main() {
        int? id = 100;
        Console.WriteLine(id);
        id = null;
        Console.WriteLine(id.HasValue);
    }
}

طباعة قيمة قابلة للقيمة null تساوي null

تؤدي طباعة قيمة قابلة للقيمة null وتساوي null إلى إنتاج سلسلة نصية فارغة، وليس الكلمة null.

using System;

class Program {
    static void Main() {
        int? value = null;
        Console.WriteLine("[" + value + "]");
    }
}

التحويل الضمني إلى نوع قابل للقيمة null

يتحول int العادي تلقائيًا إلى int?، لأن كل قيمة int صالحة لتكون قيمة int قابلة للقيمة null.

using System;

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

الأنواع القابلة للقيمة null في القيم المعادة من الأساليب

يمكن للأسلوب إرجاع نوع قابل للقيمة null للإشارة إلى الفرق بين «العثور على قيمة» و«عدم العثور على شيء».

using System;

class Program {
    static int? FindEven(int[] nums) {
        foreach (int n in nums)
            if (n % 2 == 0) return n;
        return null;
    }
    static void Main() {
        Console.WriteLine(FindEven(new[] {1, 3, 4}));
    }
}

مقارنة القيم القابلة للقيمة null

تعمل المساواة كما هو متوقع: تكون قيمتان قابلتان للقيمة null متساويتين إذا كانتا كلتاهما null أو كانتا تحملان القيمة نفسها.

using System;

class Program {
    static void Main() {
        int? a = null;
        int? b = null;
        Console.WriteLine(a == b);
        int? c = 5;
        Console.WriteLine(c == 5);
    }
}

سبب استخدام الأنواع القابلة للقيمة null

تمثّل الأنواع القيمية القابلة للقيمة null البيانات الاختيارية بوضوح، مثل عمود في قاعدة بيانات يسمح بالقيمة NULL أو حقل تركه المستخدم فارغًا.

using System;

class Program {
    static void Main() {
        int? userAge = null;
        string msg = userAge.HasValue ? "Age set" : "Age unknown";
        Console.WriteLine(msg);
    }
}

النوع القابل للقيمة null هو بنية

إن Nullable<T> نفسه نوع قيمي، لذلك لا يكون المتغير القابل للقيمة null مرجعًا مطلقًا، رغم إمكانية أن تكون قيمته null.

using System;

class Program {
    static void Main() {
        int? n = 3;
        Console.WriteLine(n.GetType().Name);
    }
}

اختبار سريع

اختبر مدى فهمك للأنواع القيمية القابلة للقيمة null.

مراجعة

لا يمكن للأنواع القيمية مثل int أن تكون null افتراضيًا. يؤدي إضافة ? إلى إنشاء نوع قابل للقيمة null (int?)، وهو اختصار لـNullable<T>.

تتيح لك الأنواع القابلة للقيمة null تمثيل البيانات المفقودة أو الاختيارية، وتتحول ضمنيًا من النوع الأساسي، وهي هياكل بحد ذاتها.

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

هل درس «التعرّف على أنواع القيم القابلة للإفراغ» مجاني؟

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

ماذا ستتعلم في «التعرّف على أنواع القيم القابلة للإفراغ»؟

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

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

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

كم من الوقت يستغرق درس «التعرّف على أنواع القيم القابلة للإفراغ»؟

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

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

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

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

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