سؤال

كنت أتساءل - متى أرغب في استخدام العضو .value على نوع لاغلي بدلاً من مجرد استدعاء المتغير نفسه؟

على سبيل المثال.

منطقي؟ ب = صحيح ؛

لماذا يمكنني استخدام B.Value للحصول على القيمة بدلاً من استخدام B فقط؟ ما هي الميزة أو الوظيفة التي تضيفها استدعاء .value؟

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

المحلول

تتم قراءة خاصية القيمة فقط وستعود نوع القيمة الفعلية. خاصية القيمة لا يمكن أن تكون لاغية.

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

bool? nullableBool = null;

if (nullableBool.HasValue)
{
    bool realBool = nullableBool.Value;
}

ومع ذلك ، ما يلي متعود ترجمة:

bool? nullableBool = true;
bool realBool = nullableBool; // Won't work

نصائح أخرى

. القيمة يعيد منطقي بدلاً من منطق؟ مما سيتيح لك استخدامه كمعلمة للوظائف التي لا تتوقع أنواعًا قابلة للإلغاء.

عندما تريد استخدام الأساليب / خصائص النوع الأساسي. لا ينطبق حقًا على Bool. اسمحوا لي أن أوضح مع DateTime:

DateTime? d;
int month = d.Value.Month;

لا يمكنك الوصول إلى خاصية الشهر مباشرة من D ، لأن DateTime؟ ليس لديه هذه الخاصية.

بالنسبة لي ، ليست قيمة كبيرة بقدر ما هي الخاصية "Hasvalue" التي أجدها مفيدة

الفرق الوحيد هو أنهما نوعان مختلفان. اذا كان لديك منطقي؟ ثم إنه نوع من منطقي البلاغ.

إذا اتصلت B.Value أنت بالفعل تعود بول وليس منطقي؟.

خفية ، ولكن عندما تحتاج إلى الإصدار غير القابل للفرق من الكائن ، استخدم الخاصية .value.

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