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 bir çağrı
Kategori Performans
Düzeltme bozucu ya da bozmayan olabilir Kesintisiz
Tanıtılan sürüm .NET 7
.NET 10'da varsayılan olarak etkin Öneri olarak
Geçerli diller C# ve Visual Basic

Neden

Dictionary<TKey,TValue>.Remove(TKey)'ya yapılan bir çağrı, Dictionary<TKey,TValue>.ContainsKey(TKey)'ya yapılan bir çağrıyla korunur.

Kural açıklaması

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

İhlalleri düzeltme

Dictionary<TKey,TValue>.ContainsKey(TKey) çağıran koruyucu kodu 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.