0

キーと 1 つ以上の値を持つデータを表す必要があります。namevaluecollection またはルックアップがあるようです。

2つの主な違いは、ルックアップが不変であることです.2つに注意すべき重要な違いは他にありますか?

4

1 に答える 1

2

NameValueCollectionILookup、いくつかの点で異なります。

まず、NameValueCollection は文字列 -> 文字列からのマップです。各キーは値を 1 つだけ持つことができ、キーと値の両方が文字列でなければなりません。これはあなたの要件を満たしているようには思えません:

キーと 1 つ以上の値を持つデータを表現する必要がある

2 つ目ILookupは、基本的に汎用的なマルチマップです。キーを 1 つ以上の値のセットにマップします。キーと値の両方を任意の型にすることができます。ILookup<,>あなたが言及したように、不変ですが、直接構築することもできません。インスタンスを取得する唯一の方法は、Enumerable.ToLookup()メソッドを使用することです。これには、すべてのデータを一度に利用できる必要があります。時間をかけてマルチマップを構築することはできません。

本当に必要なものが変更可能なマルチマップである場合はEditableLookup<,>MiscUtilDictionary<TKey,List<TValue>>の 、独自のタイプのラップのいずれかを確認する必要があります。

于 2011-07-19T01:36:26.203 に答える