Vérification null inutile dans KeyedCollection < TKey, TItem & .tcontains (TKey)

StackOverflow https://stackoverflow.com/questions/1204798

  •  05-07-2019
  •  | 
  •  

Question

Je viens de trouver un contrôle nul inutile dans KeyedCollection.Contains (TKey).

Nous n’avons conscience que c’est une très petite optimisation, mais ne devrions-nous pas penser que ce genre d’inefficacité soit détecté par un outil d’analyse de code automatisé?

Voici le C # généré par le réflecteur:

public bool Contains(TKey key)
{
    if (key == null)
    {
        ThrowHelper.ThrowArgumentNullException(ExceptionArgument.key);
    }
    if (this.dict != null)
    {
        return this.dict.ContainsKey(key);
    }
    if (key != null) // Not needed as key cannot be null
    {
        foreach (TItem local in base.Items)
        {
            if (this.comparer.Equals(this.GetKeyForItem(local), key))
            {
                return true;
            }
        }
    }
    return false;
}

Aussi, quel est le meilleur moyen d’envoyer un patch? ;-) Via les forums .net ou?

Était-ce utile?

La solution

Cela sera probablement optimisé par le JIT de toute façon, vous n’aurez donc pas à vous en soucier. Quoi qu’il en soit, le coût d’un contrôle nul est proche de zéro.

Pour signaler un bogue, vous pouvez utiliser le site Web Microsoft Connect. Mais je ne pense pas qu'ils vont le réparer ...

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top