CA2242:正确测试 NaN
类型名 |
TestForNaNCorrectly |
CheckId |
CA2242 |
类别 |
Microsoft.Usage |
是否重大更改 |
否 |
原因
表达式针对 Single.Nan 或 Double.Nan 测试某个值。
规则说明
当未定义算术运算时,Double.NaN 表示非数字结果。 测试一个值与 Double.NaN 之间的相等关系的任何表达式始终返回 false。 测试一个值与 Double.NaN 之间的不等关系的任何表达式始终返回 true。
如何解决冲突
若要修复与此规则的冲突并准确确定某个值是否表示 Double.NaN,请使用 Single.IsNan 或 Double.IsNan 来测试值。
何时禁止显示警告
不要禁止显示此规则发出的警告。
示例
下面的示例演示针对 Double.NaN 对某个值进行不正确测试的两个表达式,以及一个正确使用 Double.IsNaN 测试该值的表达式。
Imports System
Namespace UsageLibrary
Class NaNTests
Shared zero As Double
Shared Sub Main()
Console.WriteLine( 0/zero = Double.NaN )
Console.WriteLine( 0/zero <> Double.NaN )
Console.WriteLine( Double.IsNaN(0/zero) )
End Sub
End Class
End Namespace
using System;
namespace UsageLibrary
{
class NaNTests
{
static double zero;
static void Main()
{
Console.WriteLine( 0/zero == double.NaN );
Console.WriteLine( 0/zero != double.NaN );
Console.WriteLine( double.IsNaN(0/zero) );
}
}
}