ti-enxame.com

Tornar um inteiro nulo

Eu tenho uma função de atualização que atualiza uma tabela db do servidor sql por meio de um conjunto de dados. Um dos campos da tabela é um número inteiro e aceita valores nulos. Portanto, quando estou preenchendo a função de atualização, preciso inserir um valor nulo quando a função quiser um inteiro.

Tentei fazer assim, mas _intDLocation = "" lança uma exceção

Dim _dLocation As String = udDefaultLocationTextEdit.Text
    Dim _intDLocation As Integer
    If _dLocation <> "" Then
        _intDLocation = Integer.Parse(udDefaultLocationTextEdit.Text)
    Else
        'NEED HELP HERE
        _intDLocation = ""
    End If
15
Nick LaMarca

Os inteiros não podem ser definidos como nulos. Você deve tornar o inteiro "anulável" adicionando um ponto de interrogação após o inteiro da palavra. Agora _intDLocation não é mais um número inteiro normal. É uma instância de Nullable(Of Integer).

Dim _dLocation As String = udDefaultLocationTextEdit.Text
Dim _intDLocation As Integer?
If _dLocation <> "" Then
    _intDLocation = Integer.Parse(udDefaultLocationTextEdit.Text)
Else
    _intDLocation = Nothing
End If

Mais tarde, se você quiser verificar se há nulo, você pode usar esta sintaxe prática e legível:

If _intDLocation.HasValue Then
   DoSomething()
End If

Em alguns casos, você precisará acessar o valor como um número inteiro real, não um número inteiro anulável. Para esses casos, você simplesmente acessa

_intDLocation.Value

Leia tudo sobre Nullable aqui .

33
Larsenal

Experimente isto:

Dim _dLocation As String = udDefaultLocationTextEdit.Text

Dim _intDLocation As Nullable(Of  Integer)

If Not String.IsNullOrEmpty(_dLocation) Then
     _intDLocation = Integer.Parse(_dLocation)
End If
5
Jason Evans

Meu aplicativo usa muitos rótulos que começam em branco (propriedade Text), mas precisam ser incrementados como inteiros, então fiz esta função útil:

    Public Shared Function Nullinator(ByVal CheckVal As String) As Integer
    ' Receives a string and returns an integer (zero if Null or Empty or original value)
    If String.IsNullOrEmpty(CheckVal) Then
        Return 0
    Else
        Return CheckVal
    End If
End Function

Este é um exemplo típico de como seria usado:

Dim Match_Innings As Integer = Nullinator(Me.TotalInnings.Text)

Aproveitar!

0
Tony Gardner