CA1854: A módszer előnyben részesítése IDictionary.TryGetValue(TKey, out TValue)
Tulajdonság | Érték |
---|---|
Szabályazonosító | CA1854 |
Cím | A módszer előnyben részesítése IDictionary.TryGetValue(TKey, out TValue) |
Kategória | Teljesítmény |
A javítás kompatibilitástörő vagy nem törik | Nem törés |
Alapértelmezés szerint engedélyezve a .NET 8-ban | Javaslatként |
Ok
Elemhozzáférés IDictionary
, amelyet ellenőrzés IDictionary.ContainsKey
véd.
Szabály leírása
Egy elem IDictionary
elérésekor az indexelő implementáció a metódus meghívásával IDictionary.ContainsKey
null értéket keres. Ha egy if
záradékban egy értékkeresés őrzésére is meghívIDictionary.ContainsKey
, két keresés akkor lesz végrehajtva, ha csak egyre van szükség.
Szabálysértések kijavítása
Cserélje le a meghívást és az IDictionary.ContainsKey
elemhozzáférést a IDictionary.TryGetValue
metódus hívására.
Szabálysértés:
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
Javítás:
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
Mikor kell letiltani a figyelmeztetéseket?
Ezt a figyelmeztetést nyugodtan letilthatja, ha olyan egyéni implementációt IDictionary
használ, amely elkerüli az értékkeresést az IDictionary.ContainsKey
ellenőrzés végrehajtásakor.
Figyelmeztetés mellőzése
Ha csak egyetlen szabálysértést szeretne letiltani, adjon hozzá előfeldolgozási irányelveket a forrásfájlhoz a szabály letiltásához és újbóli engedélyezéséhez.
#pragma warning disable CA1854
// The code that's violating the rule is on this line.
#pragma warning restore CA1854
Ha le szeretné tiltani egy fájl, mappa vagy projekt szabályát, állítsa annak súlyosságát none
a konfigurációs fájlban.
[*.{cs,vb}]
dotnet_diagnostic.CA1854.severity = none
További információ: Kódelemzési figyelmeztetések letiltása.
Visszajelzés
https://aka.ms/ContentUserFeedback.
Hamarosan elérhető: 2024-ben fokozatosan kivezetjük a GitHub-problémákat a tartalom visszajelzési mechanizmusaként, és lecseréljük egy új visszajelzési rendszerre. További információ:Visszajelzés küldése és megtekintése a következőhöz: