Compartir a través de


CA2242: Prueba para NaN correcta

TypeName

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