Comprobación nula innecesaria en KeyedCollection < TKey, TItem > .Contains (TKey)

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

  •  05-07-2019
  •  | 
  •  

Pregunta

Acabo de encontrar una comprobación nula innecesaria en KeyedCollection.Contains (TKey).

Aprecie que solo es una optimización muy pequeña, pero ¿no debería pensar que este tipo de ineficiencia sea detectado por una herramienta automatizada de análisis de código?

Aquí está el C # generado por el 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;
}

Además, ¿cuál es la mejor manera de enviar un parche? ;-) A través de los foros .net o?

¿Fue útil?

Solución

Esto probablemente será optimizado por el JIT de todos modos, por lo que realmente no tienes que preocuparte por eso. De todos modos, el costo de un cheque nulo es cercano a cero.

Para informar un error, puede utilizar el sitio web de Microsoft Connect. Pero no creo que lo solucionen ...

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top