Kommentar
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
TypeName |
TestForNaNCorrectly |
CheckId |
CA2242 |
Category |
Microsoft.Usage |
Breaking Change |
Non Breaking |
Cause
An expression tests a value against SingleNan or DoubleNan.
Rule Description
Double.NaN, which represents not-a-number, results when an arithmetic operation is undefined. Any expression that tests equality between a value and Double.NaN always returns false. Any expression that tests inequality between a value and Double.NaN always returns true.
How to Fix Violations
To fix a violation of this rule and accurately determine whether a value represents Double.NaN, use SingleIsNan(Single) or DoubleIsNan(Double) to test the value.
When to Suppress Warnings
Do not suppress a warning from this rule.
Example
The following example shows two expressions that incorrectly test a value against Double.NaN and an expression that correctly uses Double.IsNaN to test the value.
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) );
}
}
}