CA2242: NaN에 대해 정확하게 테스트하십시오.
TypeName |
TestForNaNCorrectly |
CheckId |
CA2242 |
범주 |
Microsoft.Usage |
변경 수준 |
주요 변경 아님 |
원인
식이 Single.Nan 또는 Double.Nan에 대한 값을 테스트합니다.
규칙 설명
산술 연산이 정의되지 않은 경우 숫자가 아닌 값을 나타내는 Double.NaN이 나타납니다.값과 Double.NaN이 같은지 테스트하는 식은 항상 false를 반환합니다.값과 Double.NaN이 다른지 테스트하는 식은 항상 true를 반환합니다.
위반 문제를 해결하는 방법
이 규칙 위반 문제를 해결하고 값이 Double.NaN을 나타내는지 정확히 확인하려면 Single.IsNan 또는 Double.IsNan을 사용하여 값을 테스트합니다.
경고를 표시하지 않는 경우
이 규칙에서는 경고를 표시해야 합니다.
예제
다음 예제에서는 Double.NaN에 대한 값을 잘못 테스트하는 식과 Double.IsNaN을 올바로 사용하여 값을 테스트하는 두 개의 식을 보여 줍니다.
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) );
}
}
}