CA1853: chiamata non necessaria a 'Dictionary.ContainsKey(key)'
Proprietà | valore |
---|---|
ID regola | CA1853 |
Title | Chiamata non necessaria a 'Dictionary.ContainsKey(key)' |
Categoria | Prestazioni |
Correzione che causa un'interruzione o un'interruzione | Nessuna interruzione |
Versione introdotta | .NET 7 |
Abilitato per impostazione predefinita in .NET 8 | Come suggerimento |
Causa
Una chiamata a Dictionary<TKey,TValue>.Remove(TKey) viene sorvegliata con una chiamata a Dictionary<TKey,TValue>.ContainsKey(TKey).
Descrizione regola
Non c'è bisogno di proteggere Dictionary.Remove(key)
con Dictionary.ContainsKey(key)
. Dictionary<TKey,TValue>.Remove(TKey) controlla già se la chiave esiste e non genera un'eccezione se non esiste.
Come correggere le violazioni
Rimuovere il codice di protezione che chiama Dictionary<TKey,TValue>.ContainsKey(TKey).
Esempio
Il frammento di codice seguente mostra una violazione di 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
Il frammento di codice seguente corregge la violazione:
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
Quando eliminare gli avvisi
È sicuro eliminare un avviso se le prestazioni non sono un problema.
Eliminare un avviso
Se si vuole eliminare una singola violazione, aggiungere direttive del preprocessore al file di origine per disabilitare e quindi riabilitare la regola.
#pragma warning disable CA1853
// The code that's violating the rule is on this line.
#pragma warning restore CA1853
Per disabilitare la regola per un file, una cartella o un progetto, impostarne la gravità none
su nel file di configurazione.
[*.{cs,vb}]
dotnet_diagnostic.CA1853.severity = none
Per altre informazioni, vedere Come eliminare gli avvisi di analisi del codice.