Bagikan melalui


CA1871: Jangan melewatkan struktur nullable ke 'ArgumentNullException.ThrowIfNull'

Harta benda Nilai
ID Aturan CA1871
Judul Jangan meneruskan struct nullable ke 'ArgumentNullException.ThrowIfNull'
Kategori Performa
Perbaikan dapat bersifat merusak atau tidak merusak Tak terputus
Diaktifkan secara default di .NET 10 Sebagai informasi

Sebab

Ketika struct nullable, misalnya, int? atau Guid?, diteruskan ke ArgumentNullException.ThrowIfNull, dibungkus menjadi objek, mengakibatkan penurunan performa.

Deskripsi aturan

Untuk kinerja yang lebih baik, lebih baik memeriksa properti HasValue dan melempar pengecualian secara manual daripada mengoper struct nullable ke ArgumentNullException.ThrowIfNull.

Cara memperbaiki pelanggaran

Periksa null dan lemparkan ArgumentNullException secara manual.

Contoh

Cuplikan kode berikut menunjukkan pelanggaran CA1871:

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

Cuplikan kode berikut memperbaiki pelanggaran:

static void Print(int? value)
{
    if (!value.HasValue)
    {
        throw new ArgumentNullException(nameof(value));
    }

    Console.WriteLine(value.Value);
}

Kapan harus menekan peringatan

Aman untuk menekan peringatan ini jika performa tidak menjadi perhatian.

Menyembunyikan peringatan

Jika Anda hanya ingin menekan satu pelanggaran, tambahkan arahan praprosesor ke berkas sumber Anda untuk menonaktifkan dan kemudian mengaktifkan kembali aturan tersebut.

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

Untuk menonaktifkan aturan untuk file, folder, atau proyek, atur tingkat keparahannya ke none dalam file konfigurasi .

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

Untuk informasi selengkapnya, lihat Cara menekan peringatan analisis kode.