Controllo null non necessario in KeyedCollection < TKey, TItem > .Contains (TKey)

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

  •  05-07-2019
  •  | 
  •  

Domanda

Ho appena trovato un controllo null non necessario in KeyedCollection.Contains (TKey).

Apprezzo che sia solo un'ottimizzazione molto piccola, ma non dovresti pensare che questo tipo di inefficienza sia rilevato da uno strumento di analisi del codice automatizzato?

Ecco il C # generato da reflector:

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;
}

Inoltre, qual è il modo migliore per inviare una patch? ;-) Attraverso i .net forum o?

È stato utile?

Soluzione

Questo probabilmente sarà comunque ottimizzato da JIT, quindi non è necessario preoccuparsene. Ad ogni modo, il costo di un controllo null è vicino allo zero.

Per segnalare un bug, è possibile utilizzare il sito Web Microsoft Connect. Ma non penso che lo risolveranno ...

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top