共用方式為


CA2242:必須正確測試 NaN

型別名稱

TestForNaNCorrectly

CheckId

CA2242

分類

Microsoft.Usage

中斷變更

不中斷

原因

運算式針對 Single.NanDouble.Nan 測試值。

規則描述

若未定義數學運算,將會傳回代表不是數字的 Double.NaN。任何測試值和 Double.NaN 兩者是否相等的運算式都會傳回 false。任何測試值和 Double.NaN 兩者是否不相等的運算式則一定會傳回 true。

如何修正違規

若要修正此規則的違規情形,並正確判斷值是否代表 Double.NaN,請使用 Single.IsNanDouble.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) );
      }
   }
}