Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
| Özellik | Değer |
|---|---|
| Kural Kimliği | CA2242 |
| Başlık | NaN'ı doğru şekilde test et |
| Kategori | Kullanım |
| Düzeltme bozucu ya da bozmayan olabilir | Kesintisiz |
| .NET 10'da varsayılan olarak etkin | Öneri olarak |
| Geçerli diller | C# ve Visual Basic |
Neden
İfade, bir değeri System.Single.NaN veya System.Double.NaN ile test eder.
Kural açıklaması
System.Double.NaN, sayı olmayan bir değeri temsil eder ve aritmetik işlem tanımsız olduğunda sonuçlanır. Değer ile System.Double.NaN arasında eşitliği test eden herhangi bir ifade her zaman false döndürür. C# dilinde bir değer ile System.Double.NaN arasında eşitsizlik olup olmadığını test eden herhangi bir ifade her zaman true döndürür.
İhlalleri düzeltme
Bu kuralın ihlalini düzeltmek ve bir değerin System.Double.NaN temsil edip etmediğini doğru bir şekilde belirlemek için, değeri test etmek üzere System.Single.IsNaN veya System.Double.IsNaN kullanın.
Uyarıların ne zaman bastırılması gerekiyor?
Bu kuraldan uyarıyı bastırmayın.
Örnek
Aşağıdaki örnek, bir değeri System.Double.NaN değerine karşı yanlış test eden iki ifadeyi ve değeri test etmek için System.Double.IsNaN öğesini doğru şekilde kullanan bir ifadeyi gösterir.
Imports System
Namespace ca2242
Class NaNTests
Shared zero As Double
Shared Sub Main2242()
Console.WriteLine(0 / zero = Double.NaN)
Console.WriteLine(0 / zero <> Double.NaN)
Console.WriteLine(Double.IsNaN(0 / zero))
End Sub
End Class
End Namespace
class NaNTests
{
static double zero = 0;
static void RunIt()
{
Console.WriteLine(0 / zero == double.NaN);
Console.WriteLine(0 / zero != double.NaN);
Console.WriteLine(double.IsNaN(0 / zero));
}
}