正确的方法来测试Single值是否等于Nothing

时间:2011-11-11 18:15:32

标签: vb.net resharper

以下代码行给出了Resharper的警告:'使用相等运算符比较浮点数。在舍入值时可能会损失精确度。'

Dim samples() As Single

If samples(i) = Nothing Then
    samples(i) = _mPreviousSamples(i)
End If

检查值是否存在的最佳方法是什么?

3 个答案:

答案 0 :(得分:4)

  

检查值是否存在的最佳方法是什么?

对于像Single这样的值类型,我认为你有一个错误的概念“Nothing”。对于值类型,Nothing更准确地解释为类型的默认值:在Single的情况下,为0.0。

如果您想知道值类型是否存在值,则需要首先初始化值类型以保存在此上下文中从不存在的值。对于像Single这样的原始类型,Nothing很少足够好。如果是Single,请尝试使用Single.NaN,然后使用Single.IsNan()

检查值

答案 1 :(得分:1)

我不太了解VB.NET,但在C#中我会做float? samples = null;之类的事情。

您能否将其声明为Dim s As System.Nullable(Of Single) = Nothing

等可空类

答案 2 :(得分:1)

Dim samples As System.Nullable(Of Single) = Nothing
If samples.HasValue Then
    Console.WriteLine(samples.Value)
Else
    Console.WriteLine("samples is Nothing")
End If

编辑:精确度: 在大多数情况下,您可以像Nullable(Of Single)一样使用Single。 VB会在适当的情况下自动将其转换为Single。如果没有,只需使用上面示例中的Value属性。您也可以使用问号编写Nullable(Of Single),而不是Single?。您可以测试samples.HasValue

,而不是测试samples IsNot Nothing属性
Dim samples As Single? = Nothing
If samples Is Nothing Then
    Console.WriteLine("samples is Nothing")
Else
    Console.WriteLine(samples)
End If