直截了当的问题:我有一些双倍的变量。我希望能够在其中存储“空”状态,即我需要能够表示该变量不包含有效数据。我真的不想将布尔“有效”变量与每一个双关联,这将是丑陋的,可能是不必要的。
首先,我发现必须以不同的方式声明变量以允许检查'IsNothing'的概念,所以我这样做:
dim someDouble as Double?
(注意问号)。如果我没有这样声明,错误检查会给我一个“IsNot需要具有引用类型的操作数”消息。
声明后,将变量设置为...
someDouble = Nothing
...似乎将其设置为零,因为它从不运行我的if / else语句中的代码来检查someDouble IsNot Nothing
...这是不好因为变量可以合法地将0存储为有效数据。
我在这里缺少什么?谢谢!
编辑:我遗漏了我在课堂上使用属性Get
和Set
这些值。事实证明我正在做正确的事情,除非我将Property
的类型留作Double
而不是Double?
,因此它会重新归零而不是Nothing
值。但有用的信息仍然在下面的答案中!
答案 0 :(得分:7)
你应该阅读MSDN上的Nullable Structure
这将解释如何使用它
示例:
Sub Main()
Dim someDouble As Double?
someDouble = Nothing
If someDouble.HasValue Then
Console.WriteLine(someDouble.ToString)
Else
Console.WriteLine("someDouble is nothing / null")
End If
Console.Read()
End Sub
答案 1 :(得分:4)
虽然我不知道是什么原因导致“Nothing”出现问题,但您也可以使用“Double.NaN”(非数字)代替。这也不需要特殊的“Double?”声明。