سؤال

في C# هي nullable أنواع بدائية (أي bool?) مجرد أسماء مستعارة من أجل المقابلة Nullable<T> نوع أو هل هناك فرق بين الاثنين ؟

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

المحلول

إذا نظرتم IL باستخدام Ildasm, ستجد أن كلا منهما ترجمة وصولا إلى Nullable<bool>.

نصائح أخرى

لا يوجد فرق بين bool? b = null و Nullable<bool> b = null.على ? هو مجرد برنامج التحويل البرمجي C# جملة السكر.

للوصول إلى قيمة منطقي?تحتاج إلى القيام بما يلي:

bool? myValue = true;
bool hasValue = false;

if (myValue.HasValue && myValue.Value)
{
  hasValue = true;
}

ملاحظة لا يمكنك القيام به:

if (myValue)
{
  hasValue = true;
}

أنا مندهش ذهب أحد إلى المصدر (C# المواصفات) حتى الآن.من §4.1.10 Nullable أنواع:

أ nullable type هو مكتوب T?, حيث T هو الأساسي نوع.بناء الجملة هذا هو اختزال النظام.Nullable<T>و شكلين يمكن أن تستخدم بالتبادل.

لذا, لا, ليس هناك أي فرق بين الصورتين.(على افتراض أنك لا تملك أي نوع آخر يسمى Nullable<T> في أي من مساحات كنت تستخدم.)

A Nullable<T> هو هيكل يتكون من تي وقليلا العلم يشير إلى ما إذا كان أو لم يكن T صالحة.A Nullable<bool> ثلاثة القيم الممكنة:صحيح, خطأ و باطل.

تحرير: لقد اشتقت حقيقة أن علامة الاستفهام بعد "منطقي" كان في الواقع جزء من اسم النوع و لا مؤشر على أن كنت تسأل سؤال :).الجواب على سؤالك ، إذن ، هو "نعم, C# bool? هو مجرد اسم مستعار Nullable<bool>".

A bool هو نوع القيمة ، وبالتالي فإنه لا يمكن أن تحتوي على قيمة فارغة.إذا كنت التفاف أي نوع القيمة مع Nullable<>, ، وسوف تعطيه تلك القدرة.وعلاوة على ذلك, طرق الوصول إلى قيمة تغيير خصائص إضافية HasValue و Value.

ولكن السؤال: Nullable<bool> و bool? هي الأسماء المستعارة.

لا لا يوجد فرق.باختصار:

النظام.منطقية -> القيم الصالحة :true, false

منطقي -> الاسم المستعار النظام.منطقية

Nullable<bool> -> القيم الصالحة :true, false, null

منطقي?-> اسم مستعار Nullable<bool>

ويساعد هذا الأمل.

Null الأوليات هي مجرد العادية الأوليات ملفوفة في Nullable.أي مباراة على العكس من ذلك هي فقط مترجم و النحوية السكر.

لا فرق.نلقي نظرة هنا: http://msdn.microsoft.com/en-us/library/1t3y8s4s.aspx

"الجملة ؟ هو اختزال Nullable ، حيث T هو نوع القيمة.اثنين من أشكال قابلة للتبادل."

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