CA2242:必須正確測試 NaN
型別名稱 |
TestForNaNCorrectly |
CheckId |
CA2242 |
分類 |
Microsoft.Usage |
中斷變更 |
不中斷 |
原因
運算式針對 SingleNan() 或 DoubleNan() 測試值。
規則描述
若未定義數學運算,將會傳回代表不是數字的 Double.NaN。 任何測試值和 Double.NaN 兩者是否相等的運算式都會傳回 false。 任何測試值和 Double.NaN 兩者是否不相等的運算式則一定會傳回 true。
如何修正違規
若要修正此規則的違規情形,並正確判斷值是否代表 Double.NaN,請使用 SingleIsNan(Single) 或 DoubleIsNan(Double) 來測試值。
隱藏警告的時機
請勿隱藏此規則的警告。
範例
下列範例顯示兩個未正確依據 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) );
}
}
}