Make An Integer Null
我有一个更新函数,它通过数据集更新一个SQL Server DB表。表中的一个字段是整数,接受空值。因此,当我填充update函数时,我需要一种方法在函数需要整数时输入空值。
我试着这样做,但
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不再是普通整数。它是
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 |