3

を使用してDictionary<string, object>いますが、対応するキーのアルファベット順ではなく、辞書に配置された順序でアイテムを保持する必要があるという問題があります。

dic[key] = value追加されたアイテムの並べ替えを無効にする方法はありますか、それとも他のカスタム クラスを使用する方がよいでしょうか (すべてのアクセサーと他のアクセサーをそのままにしておきたいのですが)。

でそれができない場合Dictionary、キーでアイテムを返すために他に何を使用できますか?

4

4 に答える 4

7

オブジェクトがオブジェクトに格納される順序はDictionary<>、特定の順序であるとは限りません。キーによるアクセス用に最適化されています。オブジェクトの順序を保証する必要がある場合は、Dictionary<>

どうやらSortedDictionary<>クラスがあります。辞書とは少し対照的であるように見えるので、私はそれを探すことさえ考えませんでした...

于 2013-07-15T14:19:58.843 に答える
6

辞書に配置された順序でアイテムを保持する必要があります。

それは辞書の主な責任に準拠していません。

aList<KeyValuePair<K,V>>またはその他のものを使用して、要件に合わせることができます。dic[key] = value構文を取得するには、インデクサーを使用してクラスにラップします。

于 2013-07-15T14:20:13.917 に答える
1

これを使用できます:

List<KeyValuePair<T1,T2>>

リストは、順序が内部で定義されているディクショナリとは対照的に、挿入の順序を保持します。

編集:

順序付けと [] ゲッターの両方が必要なため、メモリに問題がない場合は、2 つの内部コレクションに値を保持するラッパー クラスを構築できます。

リストと辞書。ラッパー getter をインデックス (リストから) で、getter をキー (ディクショナリから) で指定します。リストとディクショナリは両方ともプライベートである必要があります。常に両方のコレクションからオブジェクトを追加および削除してください。

于 2013-07-15T14:22:40.660 に答える