سؤال

أنا أعمل على كتاب MVC الجديد الخاص بي وبالطبع، العينات كلها باللغة C# كالمعتاد.

هناك سطر من التعليمات البرمجية يقول

public bool? WillAttend { get; set; }

يوضح المؤلف أن علامة الاستفهام تشير إلى أن هذا منطقي لاغٍ (ثلاثي الحالة) ويمكن أن يكون صحيحًا أو خاطئًا.أو فارغة.(اتفاقية C # 3 جديدة.)

هل يدعم vb.net أي اتفاقية مثل هذه.بالتأكيد يمكنني الإعلان عن قيمة منطقية في vb.net ويمكنني تعيينها بشكل صريح على Null (لا شيء في vb.net).

ماهو الفرق.هل هناك المزيد في C#.مزايا؟

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

المحلول

  1. bool? هو مجرد اختصار بناء الجملة لنوع القيمة الفارغة:أي. Nullable<bool>
  2. في VB.NET يمكنك استخدام أحدهما: Boolean? أو Nullable(Of Boolean).

يمكنك كتابتها بهذه الطريقة مع خاصية الدعم:

Private _willAttend As Nullable(Of Boolean)
Public Property WillAttend As Nullable(Of Boolean)
    Get
        Return _willAttend
    End Get
    Set(value As Nullable(Of Boolean))
        _willAttend = value
    End Set
End Property

أو مجرد استخدام خاصية التنفيذ التلقائي مثله:

Public Property WillAttend As Boolean?

نصائح أخرى

ويمكنك نعلن قيمة قيم الفارغة 3 طرق في VB:

Dim ridesBusToWork1? As Boolean
Dim ridesBusToWork2 As Boolean?
Dim ridesBusToWork3 As Nullable(Of Boolean)

لمزيد من القراءة: MSDN - أنواع القيمة Nullable و(بصري الأساسية) .

تتوفر القيم الخالية منذ .NET 2.0.في هذا الإصدار، قامت Microsoft بتطبيق Generics (Nullable هو نوع عام).منذ الإصدار .NET 3.0، أصبح بإمكانك استخدام ?في VB.NET أيضًا (في السابق كنت قادرًا فقط على استخدام Nullable(من Boolean)).

لذلك، كما قال Lucas Aardvark في .NET 3.0، يمكنك استخدام 3 تعريفات للقيم الخالية، ولكن في .NET 2.0 يوجد 1 فقط.

Dim myBool as Nullable(of Boolean)

وومستعملة قيم الفارغة على أنواع قيمة مثل [إينتس]، bools وغيرها التي لا تدعم مهام فارغة. هذا هو عموما مفيد جدا عند طرق العودة أعداد صحيحة. إذا كانت نتيجة طريقة غير صحيحة، يمكنك العودة ببساطة مجموعة قيم الفارغة كثافة فارغة بدلا من عدد صحيح السلبي الذي قد ينتهي به الأمر إلى نتيجة صحيحة على المدى الطويل. هذا الى حد كبير الميزة الوحيدة التي تأتي إلى الذهن. وقد نشرت الآخرين كيفية القيام بذلك في VB.NET. ولن أخوض في ذلك.

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