Quelle est la valeur nulle de Nullable (Of T)?
Question
J'ai une propriété nullable et je veux renvoyer une valeur null. Comment faire cela dans VB.NET?
Actuellement, j'utilise cette solution, mais je pense qu'il pourrait y avoir un meilleur moyen.
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
La solution
Recherchez-vous le mot clé "Rien"?
Autres conseils
Oui, rien dans VB.NET ou null en C #.
Le type de données générique Nullable donne au compilateur la possibilité d’attribuer un paramètre "Nothing". (ou null "dans un type de valeur. Sans l'écrire explicitement, vous ne pouvez pas le faire.
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
Ou c’est ce que j’utilise, à vrai dire, ReSharper m’a appris:)
finder.Advisor = ucEstateFinder.Advisor == "-1" ? (long?)null : long.Parse(ucEstateFinder.Advisor);
Sur l'assignation ci-dessus, si j'assigne directement null à finder.Advisor * (long?) *, il n'y aurait pas de problème. Mais si j’essaie d’utiliser if clause, j’ai besoin de le convertir comme ça (long?) Null
.
Bien que rien
ne puisse être utilisé, votre " existant " le code est presque correct; essayez simplement d’obtenir la .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
Cela devient alors la solution la plus simple si vous souhaitez la réduire à une expression 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