C#
 Computer >> コンピューター >  >> プログラミング >> C#

C#のOrderedDictionaryで値を含むICollectionを取得する方法

OrderedDictionaryに格納されたすべての値を含むICollectionを取得するには、Valuesプロパティを使用します。この記事では、具体的なコード例を通してその使い方を解説します。

Valuesプロパティとは

System.Collections.Specialized名前空間に属するOrderedDictionaryクラスは、キーと値のペアを挿入順に保持できるコレクションです。Valuesプロパティにアクセスすると、辞書内のすべての値を格納したICollectionオブジェクトが返されます。取得したコレクションは、CopyToメソッドを使って配列へコピーすることで、ループ処理などで扱いやすくなります。

サンプルコード1

まず、数値のキーに対して英語の単語を値として登録したOrderedDictionaryから、値の一覧を取得する例を見てみましょう。

using System;
using System.Collections;
using System.Collections.Specialized;

public class Demo {
   public static void Main(){
      OrderedDictionary dict = new OrderedDictionary();
      dict.Add("1", "One");
      dict.Add("2", "Two");
      dict.Add("3", "Three");
      dict.Add("4", "Four");
      dict.Add("5", "Five");
      dict.Add("6", "Six");
      dict.Add("7", "Seven");
      dict.Add("8", "Eight");

      ICollection col = dict.Values;
      String[] strVal = new String[dict.Count];
      col.CopyTo(strVal, 0);

      Console.WriteLine("値を表示します...");
      for (int i = 0; i < dict.Count; i++) {
         Console.WriteLine(strVal[i]);
      }
   }
}

出力結果

上記のコードを実行すると、次のような出力が得られます。

値を表示します...
One
Two
Three
Four
Five
Six
Seven
Eight

処理の流れのポイント

  • dict.Values: OrderedDictionary内のすべての値をICollectionとして取得します。
  • CopyTo(strVal, 0): 取得したコレクションの要素を、インデックス0から配列strValへコピーします。
  • forループ: 配列の要素を順番に出力し、挿入順に値が並んでいることを確認できます。

サンプルコード2

続いて、文字列のキーに対して人名を値として登録した別の例を見てみましょう。

using System;
using System.Collections;
using System.Collections.Specialized;

public class Demo {
   public static void Main(){
      OrderedDictionary dict = new OrderedDictionary();
      dict.Add("One", "John");
      dict.Add("Two", "Tim");
      dict.Add("Three", "Katie");
      dict.Add("Four", "Andy");
      dict.Add("Five", "Gary");
      dict.Add("Six", "Amy");

      ICollection col = dict.Values;
      String[] strVal = new String[dict.Count];
      col.CopyTo(strVal, 0);

      Console.WriteLine("値を表示します...");
      for (int i = 0; i < dict.Count; i++) {
         Console.WriteLine(strVal[i]);
      }
   }
}

出力結果

このコードを実行すると、次の出力が得られます。

値を表示します...
John
Tim
Katie
Andy
Gary
Amy

まとめ

OrderedDictionaryのValuesプロパティを使えば、辞書に登録されたすべての値をICollectionとして簡単に取得できます。さらにCopyToメソッドで配列にコピーすれば、インデックスを使った柔軟なデータ操作が可能になります。キーと同様に、値も挿入された順序で保持されるため、順序が重要となる場面でOrderedDictionaryは非常に有用です。

  1. C#のStringDictionaryで値のコレクションを取得する方法

    C#のStringDictionaryから値のコレクションを取得するには、Keysプロパティで全キーを配列にコピーし、そのキーを使って各値へアクセスします。StringDictionaryは、キーと値がどちらも文字列型として扱われる特殊なディクショナリで、System.Collections.Specialized名前空間に属しています。 値のコレクションを取得する基本手順 Countプロパティで要素数を取得し、同じサイズのString型配列を用意します Keys.CopyTo()メソッドで、すべてのキーを配列の先頭(インデックス0)からコピーします コピーしたキーをインデクサ(strDic

  2. C#でListの要素範囲を取得する方法:GetRange()メソッドの使い方

    C#のListで特定の範囲の要素を取得するには、GetRange() メソッドを使用します。このメソッドは、指定したインデックス位置から指定した数の要素を取り出し、新しいリストとして返します。 GetRange() メソッドの基本構文 public List<T> GetRange(int index, int count); index:取得を開始する要素のインデックス(0から始まります) count:取得する要素の数 リストの作成と要素の追加 まず、リストを作成して要素を追加します。 List<int> arr1 = new List<int>();