CA1854: Preferisce il IDictionary.TryGetValue(TKey, out TValue)
metodo
Proprietà | valore |
---|---|
ID regola | CA1854 |
Title | Preferisce il IDictionary.TryGetValue(TKey, out TValue) metodo |
Categoria | Prestazioni |
Correzione che causa un'interruzione o un'interruzione | Nessuna interruzione |
Abilitato per impostazione predefinita in .NET 8 | Come suggerimento |
Causa
Accesso IDictionary
di un elemento sorvegliato da un IDictionary.ContainsKey
controllo.
Descrizione regola
Quando si accede a un elemento di un oggetto IDictionary
, l'implementazione dell'indicizzatore verifica la presenza di un valore Null chiamando il IDictionary.ContainsKey
metodo . Se si chiama IDictionary.ContainsKey
anche in una if
clausola per proteggere una ricerca di valori, vengono eseguite due ricerche quando ne è necessaria una sola.
Come correggere le violazioni
Sostituire la chiamata e l'accesso IDictionary.ContainsKey
agli elementi con una chiamata al IDictionary.TryGetValue
metodo .
Violazione:
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
Correzione:
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
Quando eliminare gli avvisi
È possibile eliminare questo avviso in modo sicuro se si usa un'implementazione personalizzata di IDictionary
che evita una ricerca di valori durante l'esecuzione del IDictionary.ContainsKey
controllo.
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 CA1854
// The code that's violating the rule is on this line.
#pragma warning restore CA1854
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.CA1854.severity = none
Per altre informazioni, vedere Come eliminare gli avvisi di analisi del codice.