Ненужная проверка нуля в KeyedCollection < TKey, TItem > .Contains (TKey)

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

  •  05-07-2019
  •  | 
  •  

Вопрос

Только что обнаружил ненужную проверку нуля в KeyedCollection.Contains (TKey).

Оцените, что это всего лишь небольшая оптимизация, но не следует ли подумать, что подобного рода неэффективность может быть обнаружена инструментом автоматического анализа кода?

Вот C #, сгенерированный отражателем:

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

Кроме того, каков наилучший способ отправки патча? ;-) Через .net форумы или?

Это было полезно?

Решение

Это, вероятно, все равно будет оптимизировано JIT, так что вам не нужно об этом беспокоиться. В любом случае, стоимость нулевой проверки близка к нулю.

Чтобы сообщить об ошибке, вы можете использовать веб-сайт Microsoft Connect. Но я не думаю, что они это исправят ...

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top