Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Nombre de tipo |
TestForNaNCorrectly |
Identificador de comprobación |
CA2242 |
Categoría |
Microsoft.Usage |
Cambio problemático |
No |
Causa
Una expresión prueba un valor con SingleNan() o DoubleNan().
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 SingleIsNan(Single) o DoubleIsNan(Double) 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) );
}
}
}