22

これら 2 つがすべての場合で機能的に同等であるかどうか知りたいです。

辞書のデフォルトのコンパレータを変更することで、これら2つが機能的に異なる可能性はありますか?

また、Keys.Contains遅くなることがほぼ保証されていませんか?

4

2 に答える 2

24

これら 2 つの関数はまったく同じことを行います。

Keys.Containsメソッドを定義する であるKeysために存在します。 標準実装 (インターフェイスではなくクラス) では、次のように定義されています。ICollection<TKey>Contains
Dictionary<TKey, TValue>.KeyCollection

bool ICollection<TKey>.Contains(TKey item){ 
    return dictionary.ContainsKey(item); 
}

明示的に実装されているため、直接呼び出すこともできません。


上記で説明したインターフェイス、または をContains()実装しているためネイティブ実装も呼び出す LINQ 拡張メソッドが表示されICollection<T>ます。

于 2011-11-23T00:30:52.010 に答える