Share via


CA1853: 'Dictionary.ContainsKey(key)' için gereksiz çağrı

Özellik Değer
Kural Kimliği CA1853
Başlık 'Dictionary.ContainsKey(key)' için gereksiz çağrı
Kategori Performans
Hataya neden olan veya bozulmayan düzeltme Hataya neden olmayan
Tanıtılan sürüm .NET 7
.NET 8'de varsayılan olarak etkin Öneri olarak

Neden

çağrısı, Dictionary<TKey,TValue>.Remove(TKey) çağrısıyla Dictionary<TKey,TValue>.ContainsKey(TKey)korunur.

Kural açıklaması

ile Dictionary.ContainsKey(key)korunmaya Dictionary.Remove(key) gerek yoktur. Dictionary<TKey,TValue>.Remove(TKey) zaten anahtarın var olup olmadığını denetler ve yoksa atamaz.

İhlalleri düzeltme

çağıran Dictionary<TKey,TValue>.ContainsKey(TKey)koruma kodunu kaldırın.

Örnek

Aşağıdaki kod parçacığı CA1853 ihlalini gösterir:

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

Aşağıdaki kod parçacığı ihlali düzeltir:

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

Uyarıların ne zaman bastırılması gerekiyor?

Performans önemli değilse uyarıyı bastırmak güvenlidir.

Uyarıyı gizleme

Yalnızca tek bir ihlali engellemek istiyorsanız, kuralı devre dışı bırakmak ve sonra yeniden etkinleştirmek için kaynak dosyanıza ön işlemci yönergeleri ekleyin.

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

Bir dosya, klasör veya projenin kuralını devre dışı bırakmak için, yapılandırma dosyasındaki önem derecesini noneolarak ayarlayın.

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

Daha fazla bilgi için bkz . Kod analizi uyarılarını gizleme.