Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
| 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.