共用方式為


CA2242:必須正確測試 NaN

屬性
規則識別碼 CA2242
職稱 必須正確測試 NaN
類別 使用方式
修正程式是中斷或非中斷 不中斷
預設在 .NET 9 中啟用 建議

原因

表達式會針對 System.Single.NaNSystem.Double.NaN測試值。

檔案描述

System.Double.NaN,表示不是數位的值,會在未定義算術運算時產生結果。 測試值之間是否相等且 System.Double.NaN 一律傳回 false的任何表達式。 測試值之間不相等的任何表達式,!=System.Double.NaN 一律會傳 true回 。

如何修正違規

若要修正此規則的違規,並準確地判斷值是否代表 System.Double.NaN,請使用 System.Single.IsNaNSystem.Double.IsNaN 來測試值。

隱藏警告的時機

請勿隱藏此規則的警告。

範例

下列範例顯示兩個不正確地測試值的 System.Double.NaN 表達式,以及正確用來 System.Double.IsNaN 測試值的表達式。

Imports System

Namespace ca2242

    Class NaNTests

        Shared zero As Double

        Shared Sub Main2242()
            Console.WriteLine(0 / zero = Double.NaN)
            Console.WriteLine(0 / zero <> Double.NaN)
            Console.WriteLine(Double.IsNaN(0 / zero))
        End Sub

    End Class

End Namespace
class NaNTests
{
    static double zero = 0;

    static void RunIt()
    {
        Console.WriteLine(0 / zero == double.NaN);
        Console.WriteLine(0 / zero != double.NaN);
        Console.WriteLine(double.IsNaN(0 / zero));
    }
}