Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
CA1854: Prefira o método
| Propriedade | valor |
|---|---|
| ID da regra | CA1854 |
| Título | Prefira o método IDictionary.TryGetValue(TKey, out TValue) |
| Categoria | Desempenho |
| A correção causa interrupção ou não | Ininterrupto |
| Habilitado por padrão no .NET 10 | Como sugestão |
| Línguas aplicáveis | C# e Visual Basic |
Motivo
Um IDictionary acesso de elemento que é protegido por uma IDictionary.ContainsKey verificação.
Descrição da regra
Quando um elemento de um IDictionary é acessado, a implementação do indexador verifica se há um valor nulo chamando o IDictionary.ContainsKey método. Ao chamar IDictionary.ContainsKey dentro de uma cláusula if para proteger uma pesquisa de valor, duas pesquisas são efetuadas quando apenas uma é necessária.
Como corrigir violações
Substitua a invocação e o acesso ao IDictionary.ContainsKey elemento por uma chamada para o IDictionary.TryGetValue método.
Violação:
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
Correção:
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 suprimir avisos
É seguro suprimir este aviso se estiveres a usar uma implementação personalizada de IDictionary que evite uma pesquisa de um valor ao realizar a verificação IDictionary.ContainsKey.
Suprimir um aviso
Se você quiser apenas suprimir uma única violação, adicione diretivas de pré-processador ao seu arquivo de origem para desativar e, em seguida, reativar a regra.
#pragma warning disable CA1854
// The code that's violating the rule is on this line.
#pragma warning restore CA1854
Para desabilitar a regra de um arquivo, pasta ou projeto, defina sua gravidade como none no arquivo de configuração.
[*.{cs,vb}]
dotnet_diagnostic.CA1854.severity = none
Para obter mais informações, consulte Como suprimir avisos de análise de código.