1

私はかなり長い間 LINQ-to-objects を使用してきましたが、Enumerable.ToLookup拡張メソッドに気づき、そのドキュメントを読みました。への読み取り専用インターフェイスを取得する最も簡単な方法を探しているときに、これに出会いましたIEnumerable<T>.ToLookup( o => o )列挙可能な結果に追加するSystem.Linq.Lookupと、 と同じ目的を果たすことができるオブジェクトになるように思えますReadOnlyCollection<T>

では、なぜReadOnlyCollection<T>もう一度直接インスタンスを作成するのでしょうか?

4

1 に答える 1

3

ルックアップは、概念的には、読み取り専用の列挙型と同じではありません。これは、各キーが複数の値を持つ辞書に似ており、キーごとに一致する値を検索するために使用されます。呼び出しToLookupにより、入力が完全に列挙され、ルックアップが構築されます。

は単に any をラップするだけでなく、読み取り専用インターフェイスのセマンティックな意味を に一致させるため、ReadOnlyCollection<T>はるかに安価になります。IList<T>IEnumerable<T>

于 2013-01-05T00:26:26.067 に答える