【C#入門】SortedListの要素を配列オブジェクトにコピーする方法
C#のSortedListコレクションの要素を配列オブジェクトへコピーするには、CopyTo()メソッドを使用します。このメソッドは、第1引数にコピー先の配列を、第2引数にコピーを開始するインデックス番号を指定します。本記事では、実際のコード例と実行結果をもとに、CopyToメソッドの基本的な使い方をわかりやすく解説します。
例1:指定したインデックス位置からコピーする
まずは、配列内の任意のインデックス位置を指定してSortedListの要素をコピーする例を見てみましょう。
using System;
using System.Collections;
public class Demo {
public static void Main(String[] args) {
SortedList list = new SortedList();
list.Add("1", "AB");
list.Add("2", "CD");
list.Add("3", "EF");
list.Add("4", "GH");
list.Add("5", "IJ");
list.Add("6", "JK");
list.Add("7", "KL");
list.Add("8", "LM");
Console.WriteLine("SortedListの要素一覧...");
foreach(DictionaryEntry d in list) {
Console.WriteLine("Key = " + d.Key + ", Value = " + d.Value);
}
Console.WriteLine("\n配列オブジェクトへコピー...");
DictionaryEntry[] dictArr = new DictionaryEntry[10];
list.CopyTo(dictArr, 2);
for (int i = 0; i < dictArr.Length; i++) {
Console.WriteLine("Key = " + dictArr[i].Key + ", Value = " + dictArr[i].Value);
}
}
}出力結果
上記のコードを実行すると、次のような出力が得られます。
SortedListの要素一覧... Key = 1, Value = AB Key = 2, Value = CD Key = 3, Value = EF Key = 4, Value = GH Key = 5, Value = IJ Key = 6, Value = JK Key = 7, Value = KL Key = 8, Value = LM 配列オブジェクトへコピー... Key = , Value = Key = , Value = Key = 1, Value = AB Key = 2, Value = CD Key = 3, Value = EF Key = 4, Value = GH Key = 5, Value = IJ Key = 6, Value = JK Key = 7, Value = KL Key = 8, Value = LM
ポイント解説
この例では、CopyTo(dictArr, 2)とすることで、配列のインデックス2番目以降にSortedListの要素がコピーされます。そのため、配列の先頭2つの要素(インデックス0と1)は初期値のまま、つまり空の状態で残ります。コピー先の配列サイズは10ですが、SortedListには8つの要素しかないため、余分な領域もそのまま保持される点に注意してください。
例2:配列の先頭からコピーする
続いて、配列の先頭(インデックス0)からSortedListの要素をコピーする例を見てみましょう。
using System;
using System.Collections;
public class Demo {
public static void Main(String[] args) {
SortedList list = new SortedList();
list.Add("1", "Katie");
list.Add("2", "Andy");
list.Add("3", "Mark");
list.Add("4", "Gary");
list.Add("5", "Sam");
Console.WriteLine("SortedListの要素一覧...");
foreach(DictionaryEntry d in list) {
Console.WriteLine("Key = " + d.Key + ", Value = " + d.Value);
}
Console.WriteLine("\n配列オブジェクトへコピー...");
DictionaryEntry[] dictArr = new DictionaryEntry[5];
list.CopyTo(dictArr, 0);
for (int i = 0; i < dictArr.Length; i++) {
Console.WriteLine("Key = " + dictArr[i].Key + ", Value = " + dictArr[i].Value);
}
}
}出力結果
上記のコードを実行すると、次のような出力が得られます。
SortedListの要素一覧... Key = 1, Value = Katie Key = 2, Value = Andy Key = 3, Value = Mark Key = 4, Value = Gary Key = 5, Value = Sam 配列オブジェクトへコピー... Key = 1, Value = Katie Key = 2, Value = Andy Key = 3, Value = Mark Key = 4, Value = Gary Key = 5, Value = Sam
ポイント解説
この例では、CopyTo(dictArr, 0)とすることで、配列の先頭から順にすべての要素がコピーされます。コピー元のSortedListとコピー先の配列のサイズが一致しているため、すべての要素がきれいに格納されています。また、SortedListはキーによって自動的にソートされた状態で要素を保持するため、コピー後の配列でも同じ順序が維持されることが確認できます。
まとめ
- SortedListの要素を配列へコピーするにはCopyTo()メソッドを使う
- 第1引数にDictionaryEntry型の配列、第2引数にコピー開始位置のインデックスを指定する
- 開始インデックスを指定すれば、配列の途中からコピーすることも可能
CopyToメソッドを活用すれば、SortedListの内容を柔軟に配列へ変換できます。用途に応じて開始インデックスを使い分けてみてください。
-
C#のSortedListクラスにおけるItemプロパティの使い方と基本を解説
C#のSortedListは、配列とハッシュテーブルを組み合わせたコレクションです。格納された要素には、キーまたはインデックスのどちらを使ってもアクセスできるという特徴があります。ItemプロパティとはItemプロパティは、SortedList内の特定のキーに関連付けられた値を取得・設定するためのプロパティです。このプロパティを使えば、新しい要素を追加することも可能です。指定したキーがまだ存在しない場合、次のように記述するだけで要素を追加できます。myCollection[myNonexistentKey] = myValue;一方、指定したキーがすでに存在している場合は、既存の値が新しい値で
-
C#のジャグ配列の要素の型とは?参照型としてnullで初期化される仕組みを解説
C#におけるジャグ配列(Jagged Array)とは、「配列の配列」のことです。そのため、ジャグ配列の各要素は参照型であり、宣言した直後の状態では null に初期化されるという特徴があります。つまり、ジャグ配列自体は1つの配列ですが、その各要素がさらに別の配列への参照を保持する構造になっています。この性質により、内側の配列ごとに異なる長さを持たせることができるのが大きなメリットです。ジャグ配列の宣言方法まず、ジャグ配列を宣言します。以下のように、角括弧を2つ重ねて記述します。int[][] marks;ジャグ配列の初期化方法次に、宣言したジャグ配列を初期化します。ここでは、5つの整数型配列