Qual é o valor nulo de Nullable(Of T)?
Pergunta
Eu tenho uma propriedade anulável e quero retornar um valor nulo.Como faço isso em VB.NET?
Atualmente uso essa solução, mas acho que pode haver uma maneira melhor.
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
Solução
Você está procurando a palavra-chave “Nada”?
Outras dicas
Sim, é Nothing em VB.NET ou nulo em C#.
O tipo de dados genérico Nullable dá ao compilador a possibilidade de atribuir um valor "Nada" (ou nulo) a um tipo de valor.Sem escrever explicitamente, você não pode fazer isso.
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 é assim que eu uso, para ser sincero, o ReSharper me ensinou :)
finder.Advisor = ucEstateFinder.Advisor == "-1" ? (long?)null : long.Parse(ucEstateFinder.Advisor);
Na atribuição acima, se eu atribuir nulo diretamente a finder.Advisor*(long?)* não haveria problema.Mas se eu tentar usar a cláusula if, preciso lançá-la assim (long?)null
.
Embora Nothing
pode ser usado, seu código "existente" está quase correto;apenas não tente obter o .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
Esta então se torna a solução mais simples se você quiser reduzi-la a um If
expressão:
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