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
Foi útil?

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.

Tipos anuláveis ​​em C#

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
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top