Sdílet prostřednictvím


CA2242: Testujte správně NaN

Název_typu

TestForNaNCorrectly

CheckId

CA2242

Kategorie

Microsoft.Usage

Změnit rozdělení

Bez rozdělení

Příčina

Zkoušky výraz hodnotu proti Single.Nan nebo Double.Nan.

Popis pravidla

Double.NaN, která představuje není číslo, výsledků po nedefinovaný aritmetické operace.Jakýkoli výraz, který testuje rovnost mezi hodnotu a Double.NaN vždy vrátí false.Jakýkoli výraz, který testuje nerovnost mezi hodnotu a Double.NaN vždy vrátí true.

Jak opravit porušení

Oprava porušení tohoto pravidla a přesně zjistit, zda hodnota představuje Double.NaN, použijte Single.IsNan nebo Double.IsNan k testování hodnoty.

Při potlačení upozornění

Nepotlačovat upozornění od tohoto pravidla.

Příklad

Následující příklad ukazuje dva výrazy, které nesprávně test hodnotu proti Double.NaN a výraz, který používá správně Double.IsNaN k testování hodnoty.

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