CA2264: 'ArgumentNullException.ThrowIfNull' öğesine null atanamayan bir değer geçirmeyin

Özellik Değer
Kural Kimliği CA2264
Başlık 'ArgumentNullException.ThrowIfNull' öğesine null atanamayan bir değer geçirmeyin
Kategori Kullanım
Hataya neden olan veya bozulmayan düzeltme Hataya neden olmayan
.NET 9'da varsayılan olarak etkin Uyarı olarak

Neden

Hiçbir zaman null olmadığı bilinen bir değer öğesine geçirildiğinde ArgumentNullException.ThrowIfNull(), deyimini hiçbir zaman bir özel durum oluşturmaz ve deyimini bir no-op işlemine dönüştürür.

Kural açıklaması

ArgumentNullException.ThrowIfNull geçirilen bağımsız değişken olduğunda nullatar. Null değer atanamayan yapılar (hariç Nullable<T>), 'nameof()' ifadeleri ve 'new' ifadeleri gibi bazı yapıların hiçbir zaman null ArgumentNullException.ThrowIfNull olduğu bilinmediğinden hiçbir zaman oluşturmaz.

Bir yapı söz konusu olduğunda, bir object?kabul ettiğinden ArgumentNullException.ThrowIfNull yapısı kutulanır ve bu da ek bir performans cezasına neden olur.

İhlalleri düzeltme

ArgumentNullException.ThrowIfNull Aramayı kaldırın.

Örnek

Aşağıdaki kod parçacığı CA2264 ihlalini gösterir:

static void Print(int value)
{
    ArgumentNullException.ThrowIfNull(value);
    Console.WriteLine(value);
}

Aşağıdaki kod parçacığı ihlali düzeltir:

static void Print(int value)
{
    Console.WriteLine(value.Value);
}

Uyarıların ne zaman bastırılması gerekiyor?

Bu uyarıyı bastırmak her zaman güvenlidir.

Uyarıyı gizleme

Yalnızca tek bir ihlali engellemek istiyorsanız, kuralı devre dışı bırakmak ve sonra yeniden etkinleştirmek için kaynak dosyanıza ön işlemci yönergeleri ekleyin.

#pragma warning disable CA2264
// The code that's violating the rule is on this line.
#pragma warning restore CA2264

Bir dosya, klasör veya projenin kuralını devre dışı bırakmak için, yapılandırma dosyasındaki önem derecesini noneolarak ayarlayın.

[*.{cs,vb}]
dotnet_diagnostic.CA2264.severity = none

Daha fazla bilgi için bkz . Kod analizi uyarılarını gizleme.