ホームページ > バックエンド開発 > C++ > C# で辞書要素の順序付き列挙を保証するにはどうすればよいですか?

C# で辞書要素の順序付き列挙を保証するにはどうすればよいですか?

Susan Sarandon
リリース: 2025-01-17 18:47:10
オリジナル
580 人が閲覧しました

How Can I Guarantee Ordered Enumeration of Dictionary Elements in C#?

C# 辞書を反復処理する際の順序の維持

標準の C# 辞書は、列挙中の要素の特定の順序を本質的に保証しません。 挿入順序に関係なく、順序は予期せずに変化する可能性があります。 ただし、必要に応じて反復順序を制御する方法があります。

順序付けられた列挙のメソッド

いくつかの戦略により、辞書要素の順序付けられた走査を保証できます。

1. KeyValuePair ペアの並べ替え:

このメソッドは、辞書を KeyValuePair オブジェクトのソートされた配列に変換します。

<code class="language-csharp">var sortedKVPs = _Dictionary.OrderBy(x => x.Key).ToArray();

foreach (KeyValuePair<string, string> kvp in sortedKVPs)
{
  Trace.Write(String.Format("{0}={1}", kvp.Key, kvp.Value));
}</code>
ログイン後にコピー

このコード スニペットは、キーに基づいてキーと値のペアを並べ替え、並べ替えられた配列を反復処理して、この例ではアルファベット順に並べます。

2. OrderedDictionary の活用:

OrderedDictionary クラスは挿入順序を明示的に維持します。

<code class="language-csharp">// Create an ordered dictionary
var orderedDictionary = new OrderedDictionary();

// Add elements
orderedDictionary.Add("orange", "1");
orderedDictionary.Add("apple", "4");
orderedDictionary.Add("cucumber", "6");

// Add using indexer
orderedDictionary["banana"] = 7;
orderedDictionary["pineapple"] = 7;

// Enumerate the ordered dictionary
foreach (DictionaryEntry entry in orderedDictionary)
{
  Trace.Write(String.Format("{0}={1}", entry.Key, entry.Value));
}</code>
ログイン後にコピー

要素は、OrderedDictionary に追加された順序とまったく同じ順序で取得されます。 OrderedDictionary はレガシー クラスであることに注意してください。新しいプロジェクトの場合は、SortedDictionary または SortedList<TKey, TValue> の使用を検討してください。 SortedDictionary はキーをソートし、SortedList<TKey, TValue> は同様の機能を提供し、場合によってはパフォーマンスが向上します。

以上がC# で辞書要素の順序付き列挙を保証するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート