Bagikan melalui


CA1853: Panggilan yang tidak perlu ke 'Dictionary.ContainsKey(key)'

Properti Nilai
ID Aturan CA1853
Judul Panggilan yang tidak perlu ke 'Dictionary.ContainsKey(key)'
Golongan Performa
Perbaikan bersifat disruptif atau non-disruptif Non-disruptif
Versi yang diperkenalkan .NET 7
Diaktifkan secara default di .NET 8 Sebagai saran

Penyebab

Panggilan ke Dictionary<TKey,TValue>.Remove(TKey) dijaga dengan panggilan ke Dictionary<TKey,TValue>.ContainsKey(TKey).

Deskripsi aturan

Tidak perlu menjaga Dictionary.Remove(key) dengan Dictionary.ContainsKey(key). Dictionary<TKey,TValue>.Remove(TKey) sudah memeriksa apakah kunci ada dan tidak melemparkan jika tidak ada.

Cara memperbaiki pelanggaran

Hapus kode penjaga yang memanggil Dictionary<TKey,TValue>.ContainsKey(TKey).

Contoh

Cuplikan kode berikut menunjukkan pelanggaran CA1853:

Dictionary<string, int> d = new();
if (d.ContainsKey("name"))
    d.Remove("name");
Class C
    Shared Sub S()
        Dim d As New Dictionary(Of String, Integer)
        If d.ContainsKey("name") Then
            d.Remove("name")
        End If
    End Sub
End Class

Cuplikan kode berikut memperbaiki pelanggaran:

Dictionary<string, int> d = new();
d.Remove("name");
Class C
    Shared Sub S()
        Dim d As New Dictionary(Of String, Integer)
        d.Remove("name")
    End Sub
End Class

Kapan harus menekan peringatan

Aman untuk menekan peringatan jika performa tidak menjadi perhatian.

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 CA1853
// The code that's violating the rule is on this line.
#pragma warning restore CA1853

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

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

Untuk informasi selengkapnya, lihat Cara menyembunyikan peringatan analisis kode.