Testar NaN corretamente

TypeName

TestForNaNCorrectly

CheckId

CA2242

Category (Categoria)

Microsoft.uso

Quebrando alterar

Não separável

Causa

Uma expressão testa um valor em SingleNan() ou DoubleNan().

Descrição da regra

Double.NaN, que representa não um número, ocorre quando uma operação aritmética é indefinida. Qualquer expressão que testa a igualdade entre um valor e Double.NaN sempre retorna false. Qualquer expressão que testa desigualdade entre um valor e Double.NaN sempre retorna true.

Como corrigir violações

Para corrigir uma violação dessa regra e determinar com precisão se um valor representa Double.NaN, use SingleIsNan(Single) ou DoubleIsNan(Double) para teste o valor.

Quando suprimir avisos

Não suprimir um aviso da regra.

Exemplo

O exemplo a seguir mostra duas expressões incorretamente testar um valor em Double.NaN uma expressão que utiliza corretamente e Double.IsNaN Para testar o 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) );
      }
   }
}