CA2242: Prueba para NaN correcta
Nombre de tipo |
TestForNaNCorrectly |
Identificador de comprobación |
CA2242 |
Categoría |
Microsoft.Usage |
Cambio problemático |
No |
Motivo
Una expresión prueba un valor con Single.Nan o Double.Nan.
Descripción de la regla
Double.NaN, que representa un valor no numérico, se obtiene cuando una operación aritmética no está definida.Cualquier expresión que pruebe la igualdad entre un valor y Double.NaN siempre devuelve false.Cualquier expresión que pruebe la desigualdad entre un valor y Double.NaN siempre devuelve true.
Cómo corregir infracciones
Para corregir una infracción de esta regla y determinar con precisión si un valor representa Double.NaN, utilice Single.IsNan o Double.IsNan para probar el valor.
Cuándo suprimir advertencias
No suprima las advertencias de esta regla.
Ejemplo
En el ejemplo siguiente se muestran dos expresiones que prueban incorrectamente un valor con Double.NaN y una expresión que utiliza correctamente Double.IsNaN para probar el valor.
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) );
}
}
}