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