【问题标题】:How do I use a null value in a double in VB.Net 2010?如何在 VB.Net 2010 中使用双精度空值?
【发布时间】:2012-01-03 19:52:37
【问题描述】:

直截了当的问题:我有几个变量是双精度的。我希望能够在其中存储“空”状态,即我需要能够表示该变量不包含有效数据。我真的不想将布尔“有效”变量与每个双精度数相关联,这会很丑陋并且可能没有必要。

首先,我发现必须以不同的方式声明变量才能检查“IsNothing”的概念,所以我这样做了:

dim someDouble as Double?

(注意问号)。如果我不这样声明,错误检查会给我一个“IsNot 需要具有引用类型的操作数”的消息。

一旦声明,将变量设置为...

someDouble = Nothing

...似乎将其设置为 zero,因为它从不运行我的 if/else 语句中的代码来检查 someDouble IsNot Nothing... 这很糟糕,因为变量可以合法地存储0 作为有效数据。

我在这里缺少什么?谢谢!

编辑:我遗漏了我在一个类中使用GetSet 这些值的属性。事实证明,我做的事情是正确的,只是我将Property 的类型保留为Double 而不是Double?,因此它被转换回零而不是Nothing 值。不过,有用的信息仍然在下面的答案中!

【问题讨论】:

    标签: vb.net null double nothing


    【解决方案1】:

    你应该去 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
    

    【讨论】:

    • 啊哈,这基本上就是我已经在做的事情了...除了我搞砸了,忘记将我的 Property 更改为键入“Double?”从'Double'开始,所以它在做'Set'时将其转换回标准的'Double'。啊!感谢您的链接!
    【解决方案2】:

    虽然我不知道是什么导致了“Nothing”问题,但您也可以改用“Double.NaN”(非数字)。这也不需要特殊的“Double?”声明。

    【讨论】:

    • 好主意!我想我会尝试这个而不是 Nothing (null) 方法。不过,请参阅我对 Fredou 的回答的评论,了解为什么它不能与 Nothing 一起使用。
    猜你喜欢
    • 1970-01-01
    • 2010-10-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多