VB检查int是否为空

时间:2010-11-22 12:00:13

标签: vb.net integer value-type

一个非常无聊的问题,对不起,但我真的不知道呢;)我一直尝试使用string.empty,但是使用小数会产生错误。

有什么功能吗?不幸的是,对于最简单的问题,谷歌没有答案

3 个答案:

答案 0 :(得分:18)

你的标题(和标签)询问“int”,但你的问题是你得到一个带有“十进制”的错误。无论哪种方式,value type (例如IntegerDecimal等)时都没有“空”的东西。它们不能像使用reference type(如Nothing或类)一样设置为String。相反,值类型具有隐式默认构造函数,可自动将该类型的变量初始化为其默认值。对于IntegerDecimal等数值,此值为0。其他类型,请参阅this table

因此,您可以使用以下代码检查值类型是否已初始化:

Dim myFavoriteNumber as Integer = 24
If myFavoriteNumber = 0 Then
    ''#This code will obviously never run, because the value was set to 24
End If

Dim mySecondFavoriteNumber as Integer
If mySecondFavoriteNumber = 0 Then
    MessageBox.Show("You haven't specified a second favorite number!")
End If

请注意,编译器在幕后自动将mySecondFavoriteNumber初始化为0(Integer的默认值),因此If语句为True。事实上,上述mySecondFavoriteNumber的声明等同于以下声明:

Dim mySecondFavoriteNumber as Integer = 0


当然,正如您可能已经注意到的那样,无法知道一个人最喜欢的号码是实际上 0,还是他们还没有指定一个喜欢的号码。 如果您确实需要可以设置为Nothing的值类型,则可以使用Nullable(Of T) ,将变量声明为:

Dim mySecondFavoriteNumber as Nullable(Of Integer)

并检查是否已按如下方式分配:

If mySecondFavoriteNumber.HasValue Then
    ''#A value has been specified, so display it in a message box
    MessageBox.Show("Your favorite number is: " & mySecondFavoriteNumber.Value)
Else
    ''#No value has been specified, so the Value property is empty
    MessageBox.Show("You haven't specified a second favorite number!")
End If

答案 1 :(得分:3)

也许您正在寻找的是Nullable

    Dim foo As Nullable(Of Integer) = 1
    Dim bar As Nullable(Of Decimal) = 2

    If foo = 1 Then
        If bar = 2 Then
            foo = Nothing
            bar = Nothing
            If foo Is Nothing AndAlso bar Is Nothing Then Stop
        End If
    End If

答案 2 :(得分:0)

嗯,数字的默认值是0,但你也可以试试这个:

int x = 123;
String s = "" + x; 

然后检查长度或字符串's'是否为空。