Ordnungsgemäß auf NaN testen
Aktualisiert: November 2007
TypeName |
TestForNaNCorrectly |
CheckId |
CA2242 |
Kategorie |
Microsoft.Usage |
Unterbrechende Änderung |
Nicht unterbrechend |
Ursache
Ein Ausdruck testet einen Wert anhand von SingleNan() oder DoubleNan().
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.
Behandlung von Verstößen
Um einen Verstoß gegen diese Regel zu beheben und genau zu bestimmen, ob ein Wert Double.NaN darstellt, verwenden Sie SingleIsNan(Single) oder DoubleIsNan(Double), 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) );
}
}
}