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 |
IDictionary.TryGetValue(TKey, out TValue) Lebih suka metode |
| Golongan | Performa |
| Perbaikan bersifat disruptif atau non-disruptif | Non-disruptif |
| Diaktifkan secara default di .NET 10 | Sebagai saran |
Penyebab
Akses IDictionary elemen yang dijaga oleh IDictionary.ContainsKey pemeriksaan.
Deskripsi aturan
Ketika elemen diakses IDictionary , implementasi pengindeks memeriksa nilai null dengan memanggil IDictionary.ContainsKey metode . Jika Anda juga memanggil IDictionary.ContainsKey dalam if klausul untuk menjaga pencarian nilai, dua pencarian dilakukan saat hanya satu yang diperlukan.
Cara memperbaiki pelanggaran
IDictionary.ContainsKey Ganti pemanggilan dan akses elemen dengan panggilan ke IDictionary.TryGetValue metode .
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.