共用方式為


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) );
      }
   }
}