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.
CA1854: Lebih suka
| Properti | Nilai |
|---|---|
| ID Aturan | CA1854 |
| Judul | Metode IDictionary.TryGetValue(TKey, out TValue) lebih disukai |
| Kategori | Performa |
| Perbaikan bersifat merusak atau tidak merusak | Tidak terputus |
| Diaktifkan secara default di .NET 10 | Sebagai saran |
| Bahasa yang berlaku | C# dan Visual Basic |
Penyebab
Akses elemen IDictionary yang diawasi oleh pemeriksaan IDictionary.ContainsKey.
Deskripsi aturan
Ketika elemen IDictionary diakses, implementasi pengindeks memeriksa nilai null dengan memanggil metode IDictionary.ContainsKey. Jika Anda juga memanggil IDictionary.ContainsKey dalam if klausul untuk menjaga pencarian nilai, dua pencarian dilakukan saat hanya satu yang diperlukan.
Cara memperbaiki pelanggaran
Ganti pemanggilan dan akses elemen IDictionary.ContainsKey dengan memanggil metode IDictionary.TryGetValue.
Pelanggaran:
public string? GetValue(string key)
{
if (_dictionary.ContainsKey(key))
{
return _dictionary[key];
}
return null;
}
Public Function GetValue(key As String) As String
If _dictionary.ContainsKey(key) Then
Return _dictionary(key)
End If
Return Nothing
End Function
Perbaikan:
public string? GetValue(string key)
{
if (_dictionary.TryGetValue(key, out string? value))
{
return value;
}
return null;
}
Public Function GetValue(key As String) As String
Dim value as String
If _dictionary.TryGetValue(key, value) Then
Return value
End If
Return Nothing
End Function
Kapan harus menekan peringatan
Aman untuk menekan peringatan ini jika Anda menggunakan implementasi IDictionary kustom yang menghindari pencarian nilai saat melakukan IDictionary.ContainsKey pemeriksaan.
Menyembunyikan peringatan
Jika Anda hanya ingin menyembunyikan satu pelanggaran, tambahkan arahan praprosedur ke file sumber Anda untuk dinonaktifkan lalu aktifkan kembali aturannya.
#pragma warning disable CA1854
// The code that's violating the rule is on this line.
#pragma warning restore CA1854
Untuk menonaktifkan aturan untuk file, folder, atau proyek, atur tingkat keparahannya ke none dalam file konfigurasi.
[*.{cs,vb}]
dotnet_diagnostic.CA1854.severity = none
Untuk informasi selengkapnya, lihat Cara menyembunyikan peringatan analisis kode.