Freigeben über


CA2242: Ordnungsgemäß auf NaN testen

TypeName

TestForNaNCorrectly

CheckId

CA2242

Kategorie (Category)

Microsoft.Usage

Unterbrechende Änderung

Nicht unterbrechend

Ursache

Ein Ausdruck testet einen Wert anhand von Single.Nan oder Double.Nan.

Regelbeschreibung

Double.NaN steht für keine Zahl (Not a Number, NaN) und wird ausgegeben, wenn eine arithmetische Operation nicht definiert ist.Jeder Ausdruck, durch den die Gleichheit zwischen einem Wert und Double.NaN getestet wird, gibt immer false zurück.Jeder Ausdruck, durch den die Ungleichheit zwischen einem Wert und Double.NaN getestet wird, gibt immer true zurück.

Behandeln von Verstößen

Um einen Verstoß gegen diese Regel zu beheben und genau zu bestimmen, ob ein Wert Double.NaN darstellt, verwenden Sie Single.IsNan oder Double.IsNan, um den Wert zu testen.

Wann sollten Warnungen unterdrückt werden?

Unterdrücken Sie keine Warnung dieser Regel.

Beispiel

Das folgende Beispiel enthält zwei Ausdrücke, durch die ein Wert falsch anhand von Double.NaN getestet wird, sowie einen Ausdruck, der Double.IsNaN auf richtige Weise zum Testen des Werts verwendet.

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