سؤال

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

كيف يمكنني أن أجعلها مطلقة؟

هل كانت مفيدة؟

المحلول

تريد أن تنظر إلى Nullable<T> نوع القيمة.

نصائح أخرى

public struct Something
{
    //...
}

public static Something GetSomethingSomehow()
{
    Something? data = MaybeGetSomethingFrom(theDatabase);
    bool questionMarkMeansNullable = (data == null);
    return data ?? Something.DefaultValue;
}

التعريف ل Nullable<T> بنية هي:

struct Nullable<T>
{
    public bool HasValue;
    public T Value;
}

يتم إنشاؤه بهذه الطريقة:

Nullable<PackageName.StructName> nullableStruct = new Nullable<PackageName.StructName>(params);

يمكنك اختصار هذه الفوضى ببساطة عن الكتابة:

PackageName.StructName? nullableStruct  = new PackageName.StructName(params);

يرى: MSDN.

Nullable<T> هو فئة مجمع يخلق نسخة لا تنطوي من النوع t. يمكنك أيضا استخدام بناء الجملة؟ (على سبيل المثال int؟) لتمثيل النسخة المطلقة من النوع T.

استخدام المدمج اختصارات ل Nullable<T> بنية، بمجرد إضافة ? إلى الإعلان:

int? x = null;

if (x == null) { ... }

نفس الشيء فقط لأي نوع آخر، بنية، إلخ.

MyStruct? myNullableStruct = new MyStruct(params);

يمكنك أن تجعل شيئا نلاوة على سبيل المثال مثل هذا:

// Create the nullable object.
int? value = new int?();

// Check for if the object is null.
if(value == null)
{
    // Your code goes here.
}

يمكنك استخدام إفتراضي كبديل

public struct VelocityRange
{
    private double myLowerVelocityLimit;
    private double myUpperVelocityLimit;
}

VelocityRange VelocityRange = إفتراضي(velocityrange)؛

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top