2009-07-30 19 views
1

KeyedCollection.Contains(TKey)で不要なnullチェックが見つかりました。KeyedCollectionの不要なnullチェック<TKey, TItem> .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 forumsまたは?

答えて

2

これはおそらくJITによって最適化されるため、実際には心配する必要はありません。とにかく、ヌルチェックのコストはゼロに近いです。

バグを報告するには、Microsoft ConnectのWebサイトを使用します。しかし、私は彼らがそれを修正するとは思わない...

+0

また、現代的なCPU上で信じられないほどよくうまく予測される分岐になるだろう、実際には実際には、 – ShuggyCoUk

+0

JITされているのであれば、コード解析ツールもそれを拾うべきではないでしょうか? – si618

+0

はい、おそらく...あなたのポイントは何ですか? –

関連する問題