CA2242: Testar NaN corretamente
TypeName |
TestForNaNCorrectly |
CheckId |
CA2242 |
<strong>Categoria</strong> |
Microsoft.Usage |
Alteração significativa |
Não separável |
Causa
Uma expressão testa um valor contra Single.Nan ou Double.Nan.
Descrição da regra
Double.NaN, que representa o não-numéricos, 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 desta regra e determinar com precisão se um valor representa Double.NaN, use Single.IsNan ou Double.IsNan para testar 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 contra Double.NaN e uma expressão que utiliza corretamente 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) );
}
}
}