الأنواع ذات القيم الخالية (دليل البرمجة لـ #C)

الأنواع ذات القيم الخالية عبارة عن مثيلات من البنية System.Nullable<T>. النوع القابل للقيم الخالية يمكنه أن يمثل النطاق الصحيح للقيم لنوع القيمة الأساسي الخاص به بالإضافة إلى قيم null إضافية. على سبيل المثال، Nullable<Int32> تُنطق "Nullable of Int32"، يمكن تعيين له أية قيمة من -2147483648 إلى 2147483647 أو يمكن تعيين له قيمة null. يمكن تعيين لـ Nullable<bool> القيم true أو false أو null. القدرة على تعيين قيم null إلى الأنواع الرقمية والمنطقية يكون مفيداً بشكل خاص عندما تتعامل مع قواعد البيانات وأنواع البيانات الأخرى التي تحتوي على عناصر لا يتم تعيين قيم لها. على سبيل المثال، يمكن للحقل المنطقي في قواعد البيانات تخزين القيم true أو false أو تكون غير معروفة.

class NullableExample
{
    static void Main()
    {
        int? num = null;
        if (num.HasValue == true)
        {
            System.Console.WriteLine("num = " + num.Value);
        }
        else
        {
            System.Console.WriteLine("num = Null");
        }

        // y is set to zero
        int y = num.GetValueOrDefault();

        // num.Value throws an InvalidOperationException if num.HasValue is false
        try
        {
            y = num.Value;
        }
        catch (System.InvalidOperationException e)
        {
            System.Console.WriteLine(e.Message);
        }
    }
}

يعرض المثال المخرجات:

num = Null

Nullable object must have a value.

نظرة عامة حول الأنواع التي تقبل القيم الخالية

لدى الأنواع التي تقبل القيم الخالية الصفات التالية:

  • الأنواع التي تقبل القيم الخالية تمثل متغيرات من نوع قيمة ويمكن تعيين لها قيمة null. لا يمكنك إنشاء نوع قابل للقيم الخالية استناداً إلى نوع مرجع. (أنواع المرجع تدعم القيمة null.)

  • بناء الجملة T? اختصار لـ Nullable<T>، حيث أن T نوع قيمة. يعتبر النموذجين متبادلين.

  • تعيين قيمة إلى نوع يقبل القيم الخالية كما تفعل لنوع القيمة عادية، على سبيل المثال int? x = 10; or double? d = 4.108. However, a nullable type can also be assigned the value null: int? x = null.

  • استخدم الأسلوب Nullable<T>.GetValueOrDefault لإرجاع إما القيمة المعينة، أو القيمة الافتراضية للنوع الأساسي إذا كانت القيمة null، على سبيل المثال int j = x.GetValueOrDefault();

  • استخدم الخصائص القابلة للقراءة فقط HasValue و Value لاختبار null واسترداد القيمة، على سبيل المثال if(x.HasValue) j = x.Value;

    • تقوم الخاصية HasValue بإرجاع true إذا كان المتغير يتضمن القيمة أو false إذا كانت null.

    • الخاصية Value ترجع قيمة إذا تم تعيين أحدها. وإلا، سيتم طرح System.InvalidOperationException.

    • القيمة الافتراضية لـ HasValue هي false. الخاصية Value لا تحتوي على قيمة افتراضية.

    • يمكنك أيضًا استخدام عوامل التشغيل == و != بنوع يقبل القيم الخالية، على سبيل المثال، if (x != null) y = x;

  • استخدم عامل التشغيل ?? لتعيين قيمة افتراضية سيتم تطبيقها عندما يتم تعيين للنوع (الذي يقبل القيم الخالية وتكون قيمته الحالية هي null) نوع لا يقبل القيم الخالية على سبيل المثال int? x = null; int y = x ?? -1;

  • الأنواع القابلة للقيم الخالية المتداخلة غير مسموح بها. لا يمكن ترجمة السطر التالي: Nullable<Nullable<int>> n;

الأقسام ذات الصلة

لمزيد من المعلومات:

مواصفات لغة #C

لمزيد من المعلومات، راجع مواصفات لغة #C. مواصفات اللغة هي المصدر النهائي لبناء جملة C# واستخدامها.

راجع أيضًا:

المرجع

Nullable

المبادئ

دليل البرمجة لـ #C

موارد أخرى

Visual C#‎

مرجع C#‎

ماذا بالضبط تعني كلمة 'lifted' ؟