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 SingleNan() ou DoubleNan().
Descrição da regra
Double.NaN, que representa o não-numéricos, o que resulta 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 SingleIsNan(Single) ou DoubleIsNan(Double) 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 usa 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) );
}
}
}