Megosztás a következőn keresztül:


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.