Was ist der Nullwert von Nullable (Of T)?
Frage
Ich habe eine Nullable-Eigenschaft, und ich möchte einen Nullwert zurück. Wie mache ich das in VB.NET?
Zur Zeit verwende ich diese Lösung, aber ich denke, es könnte ein besserer Weg geben.
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
Lösung
Suchen Sie nach dem Stichwort "Nichts"?
Andere Tipps
Ja, es ist nichts in VB.NET oder null in C #.
Die Nullable generischen Datentypen geben dem Compiler die Möglichkeit, ein „Nichts“ (oder null“Wert auf einen Wert Typen zuordnen. Ohne sie explicitally zu schreiben, man kann es nicht tun.
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
Oder ist dies die Art, wie ich verwenden, ehrlich ReSharper zu sein hat mich gelehrt:)
finder.Advisor = ucEstateFinder.Advisor == "-1" ? (long?)null : long.Parse(ucEstateFinder.Advisor);
Auf der Zuweisung oben, wenn ich direkt an finder.Advisor * (long?) Null zuweisen * wäre es kein Problem sein. Aber wenn ich versuche, wenn Klausel zu verwenden, ich brauche es zu werfen, wie die (long?)null
.
Obwohl Nothing
verwendet werden kann, Ihr „bestehender“ Code ist fast richtig; nur nicht versuchen, die .Value
zu bekommen:
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
Dies wird dann die einfachste Lösung, wenn Sie es zu reduzieren, um einen If
Ausdruck passieren wollen:
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