关于vb.net:使整数为空null

Make An Integer Null

我有一个更新函数,它通过数据集更新一个SQL Server DB表。表中的一个字段是整数,接受空值。因此,当我填充update函数时,我需要一种方法在函数需要整数时输入空值。

我试着这样做,但_intDLocation =""提出了一个例外。

1
2
3
4
5
6
7
8
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

整数不能设置为空。您必须通过在integer一词后面添加问号来使整数"可以为空"。现在,intdlocation不再是普通整数。它是Nullable(Of Integer)的一个实例。

1
2
3
4
5
6
7
Dim _dLocation As String = udDefaultLocationTextEdit.Text
Dim _intDLocation As Integer?
If _dLocation <>"" Then
    _intDLocation = Integer.Parse(udDefaultLocationTextEdit.Text)
Else
    _intDLocation = Nothing
End If

稍后,如果要检查是否为空,可以使用此方便易读的语法:

1
2
3
If _intDLocation.HasValue Then
   DoSomething()
End If

在某些情况下,您需要以实际整数的形式访问该值,而不是可以为空的整数。对于这些情况,您只需访问

1
_intDLocation.Value

在这里阅读关于nullable的所有内容。


试试这个:

1
2
3
4
5
6
7
Dim _dLocation As String = udDefaultLocationTextEdit.Text

Dim _intDLocation As Nullable(Of  Integer)

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


我的应用程序使用了许多以空白开头的标签(文本属性),但需要以整数形式递增,因此我使用了这个方便的函数:

1
2
3
4
5
6
7
8
    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

这是如何使用它的典型示例:

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

享受!


1
_intDLocation = Nothing