CA2242: A NaN helyes tesztelése
Tulajdonság | Érték |
---|---|
Szabályazonosító | CA2242 |
Cím | NaN helyes tesztelése |
Kategória | Használat |
A javítás kompatibilitástörő vagy nem törik | Nem törés |
Alapértelmezés szerint engedélyezve a .NET 8-ban | Javaslatként |
Ok
A kifejezések egy értéket tesztelnek a (vagy) System.Double.NaNértékenSystem.Single.NaN.
Szabály leírása
System.Double.NaN, amely nem számértéket jelöl, akkor jön létre, ha egy számtani művelet nincs meghatározva. Bármely kifejezés, amely egy érték közötti egyenlőséget tesztel, és System.Double.NaN mindig visszaad false
. Bármely kifejezés, amely egy érték közötti egyenlőtlenséget (!=
C#-ban) tesztel, és System.Double.NaN mindig visszaad true
.
Szabálysértések kijavítása
A szabály megsértésének kijavításához és annak pontos meghatározásához, hogy egy érték jelöli-e System.Double.NaNaz értéket, használja System.Single.IsNaN vagy System.Double.IsNaN tesztelje az értéket.
Mikor kell letiltani a figyelmeztetéseket?
Ne tiltsa el a szabály figyelmeztetését.
Példa
Az alábbi példa két olyan kifejezést mutat be, amelyek helytelenül tesztelnek egy értéket System.Double.NaN , és egy olyan kifejezést, amely helyesen használja System.Double.IsNaN az érték tesztelését.
Imports System
Namespace ca2242
Class NaNTests
Shared zero As Double
Shared Sub Main2242()
Console.WriteLine(0 / zero = Double.NaN)
Console.WriteLine(0 / zero <> Double.NaN)
Console.WriteLine(Double.IsNaN(0 / zero))
End Sub
End Class
End Namespace
class NaNTests
{
static double zero = 0;
static void Main()
{
Console.WriteLine(0 / zero == double.NaN);
Console.WriteLine(0 / zero != double.NaN);
Console.WriteLine(double.IsNaN(0 / zero));
}
}
Visszajelzés
https://aka.ms/ContentUserFeedback.
Hamarosan elérhető: 2024-ben fokozatosan kivezetjük a GitHub-problémákat a tartalom visszajelzési mechanizmusaként, és lecseréljük egy új visszajelzési rendszerre. További információ:Visszajelzés küldése és megtekintése a következőhöz: