1

intアイテムが追加された順序を保持するための要件を持つ-stringキーと値のペアのリストを保存する必要があります。初期化されると、変更されません。つまり、何も追加または削除されません。

最初は使うことを考えていDictionary<int,string>ましたが、アイテムにアクセスする必要があるたびに

foreach(var entry in dict.OrderBy(e=>e.Key)) { } //as Key is `int`

ただし、毎回注文するのが最善の方法ではないようです。

今、私はアイテムの注文を保証するList<Tuple<int, string>>とすぐに、を持っているという考えに至りました。List<T>

それで、より良いオプションはありますか?

4

3 に答える 3

4

提案された可能性を見る:

  • Dictionaryアイテムの順序を保証するものではありません
  • SortedDictionaryアイテムを並べ替えますが、追加した順序ではありません(キー比較に基づいて並べ替えます)。
  • OrderedDictionary順序は維持されますが、一般的ではなく、不要なキャストとボクシングが導入されます。

だから私はあなたが使うべきだと思いますList<Tuple<int, string>>foreach順序が保持され、インデックス付きアクセスを使用した反復には十分です。サイズが事前にわかっている場合は、Cuong Le が回答で提案したように、配列または読み取り専用のコレクション型を使用することもできます。

于 2013-02-01T07:16:15.857 に答える
2

重複キーを許可する場合はList<Tuple<int, string>>、最良の選択です。リストを読み取り専用にするために、初期化後に読み取り専用リストを公開できます。

 var readonlyList = new ReadOnlyCollection<Tuple<int, string>>(yourlist);
于 2013-02-01T07:18:01.047 に答える
0

データ構造としては適してDictionaryいるように見えますが、アイテムの順序を保証するものではありません。

リストは、保存しようとしているデータ構造にうまく適合しないため、適切ではないようです。

OrderedDictionary アイテムの順序を保証するを使用できます。

foreach (DictionaryEntry entry in orderedDictionary)
{
    //...
}
于 2013-02-01T07:20:18.127 に答える