ما هي قيمة فارغة من Nullable(T)?
سؤال
لدي nullable الملكية و أريد العودة إلى قيمة فارغة.كيف أفعل ذلك في VB.NET ?
حاليا أنا استخدم هذا الحل, ولكن أعتقد أنه قد يكون هناك طريقة أفضل.
Public Shared ReadOnly Property rubrique_id() As Nullable(Of Integer)
Get
If Current.Request.QueryString("rid") <> "" Then
Return CInt(Current.Request.QueryString("rid"))
Else
Return (New Nullable(Of Integer)).Value
End If
End Get
End Property
المحلول
هل تبحث عن كلمة "لا شيء" ؟
نصائح أخرى
نعم لا شيء في VB.NET أو null في C#.
على Nullable عامة نوع البيانات تعطي مترجم إمكانية تعيين "لا شيء" (أو فارغة" القيمة القيمة نوع.دون explicitally الكتابة, لا يمكنك أن تفعل ذلك.
Public Shared ReadOnly Property rubrique_id() As Nullable(Of Integer)
Get
If Current.Request.QueryString("rid") <> "" Then
Return CInt(Current.Request.QueryString("rid"))
Else
Return Nothing
End If
End Get
End Property
أو هذه هي الطريقة التي يمكنني استخدام, أن نكون صادقين ReSharper علمني :)
finder.Advisor = ucEstateFinder.Advisor == "-1" ? (long?)null : long.Parse(ucEstateFinder.Advisor);
على تعيين أعلاه إذا كنت مباشرة تعيين null إلى الباحث.مستشار*(طويلة؟)* لن يكون هناك أي مشكلة.ولكن إذا حاولت استخدام شرط إذا أريد أن يلقي مثل هذا (long?)null
.
على الرغم من أن Nothing
يمكن استخدامها ، "القائمة" رمز تقريبا الصحيح ؛ فقط لا تحاول الحصول على .Value
:
Public Shared ReadOnly Property rubrique_id() As Nullable(Of Integer)
Get
If Current.Request.QueryString("rid") <> "" Then
Return CInt(Current.Request.QueryString("rid"))
Else
Return New Nullable(Of Integer)
End If
End Get
End Property
هذا ثم يصبح أبسط حل إذا كنت تريد للحد من ذلك If
التعبير:
Public Shared ReadOnly Property rubrique_id() As Nullable(Of Integer)
Get
Return If(Current.Request.QueryString("rid") <> "", _
CInt(Current.Request.QueryString("rid")), _
New Nullable(Of Integer))
End Get
End Property