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