一个非常无聊的问题,对不起,但我真的不知道呢;)我一直尝试使用string.empty,但是使用小数会产生错误。
有什么功能吗?不幸的是,对于最简单的问题,谷歌没有答案
答案 0 :(得分:18)
你的标题(和标签)询问“int”,但你的问题是你得到一个带有“十进制”的错误。无论哪种方式,在value type (例如Integer
,Decimal
等)时都没有“空”的东西。它们不能像使用reference type(如Nothing
或类)一样设置为String
。相反,值类型具有隐式默认构造函数,可自动将该类型的变量初始化为其默认值。对于Integer
和Decimal
等数值,此值为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'是否为空。