Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
CA1854: Yöntemini tercih edin
| Özellik | Değer |
|---|---|
| Kural Kimliği | CA1854 |
| Başlık | Yöntemini tercih edin IDictionary.TryGetValue(TKey, out TValue) |
| Kategori | Performans |
| Düzeltme bozucu ya da bozmayan olabilir | Kesintisiz |
| .NET 10'da varsayılan olarak etkin | Öneri olarak |
| Geçerli diller | C# ve Visual Basic |
Neden
IDictionary.ContainsKey kontrolü tarafından korunan bir IDictionary öğe erişimi.
Kural açıklaması
IDictionary öğesinin bir öğesine erişildiğinde, dizin oluşturucu uygulaması IDictionary.ContainsKey yöntemini çağırarak null değeri denetler. Bir değer aramasını korumak için if tümcesinde IDictionary.ContainsKey'yi de çağırırsanız, yalnızca bir arama gerektiğinde iki arama gerçekleştirilmiş olur.
İhlalleri düzeltme
IDictionary.ContainsKey çağrısını ve öğe erişimini bir IDictionary.TryGetValue yöntemi çağrısı ile değiştirin.
İhlal:
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
Düzeltme:
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
Uyarıların ne zaman bastırılması gerekiyor?
IDictionary kontrolünü gerçekleştirirken değer aramasını önleyen bir özel uygulama kullanıyorsanız, bu uyarıyı gizlemeniz 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 CA1854
// The code that's violating the rule is on this line.
#pragma warning restore CA1854
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.CA1854.severity = none
Daha fazla bilgi için bkz . Kod analizi uyarılarını gizleme.