¿Cuál es el valor nulo de Nullable(T)?
Pregunta
Tengo una propiedad nullable, y quiero devolver un valor null.¿Cómo puedo hacer que en VB.NET ?
Actualmente yo uso esta solución, pero creo que no podría haber una mejor manera.
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
Solución
Estás buscando la palabra clave "Nada"?
Otros consejos
Sí, no es Nada en VB.NET o null en C#.
El que acepta valores null genérico de tipo de datos de dar el compilador de la posibilidad de asignar un "Nada" (o valor" null " a un tipo de valor.Sin explicitally escrito, usted no puede hacerlo.
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
O esta es la forma en que uso, para ser honesto ReSharper me ha enseñado :)
finder.Advisor = ucEstateFinder.Advisor == "-1" ? (long?)null : long.Parse(ucEstateFinder.Advisor);
En la asignación de arriba, si yo directamente asignar null a finder.Asesor*largo (?)* no habría ningún problema.Pero si intento utilizar si la cláusula necesito para lanzarla como que (long?)null
.
Aunque Nothing
puede ser utilizado, su código "existente" es casi correcta;simplemente no tratar de obtener 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
Esto entonces se convierte en la solución más simple si le sucede a reducirlo a un If
expresión:
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