配列のコピー
CoddyのC#ジャーニー「基礎」セクションの一部。レッスン 58/70。
ある配列から別の配列に要素をコピーするには、Array.Copyを使います。引数は5つです。
Array.Copy(source, sourceIndex, destination, destinationIndex, length);sourceからlength個の要素をsourceIndexを開始位置として取得し、destinationのdestinationIndexを開始位置として書き込みます。コピー先の配列はあらかじめ存在し、十分な大きさでなければなりません。
最後の引数は個数です。コピーする要素の数であり、コピーを終了する位置ではありません。
int[] scores = {90, 75, 60, 85};
int[] firstTwo = new int[2];
Array.Copy(scores, 0, firstTwo, 0, 2);
// firstTwo は {90, 75} になりますdestinationIndex は、最初にコピーされた要素が配置される位置です。コピーする数に source.Length を使うと、サイズに関係なく配列全体がコピーされます。
int[] source = {1, 2, 3};
int[] destination = new int[6];
Array.Copy(source, 0, destination, 3, source.Length);
// destination は {0, 0, 0, 1, 2, 3} になります一方の配列の後ろにもう一方の配列を配置するには、2つ目の配列を1つ目の配列が終わる位置にコピーします。その位置は、1つ目の配列の Length です。
int[] first = {1, 2};
int[] second = {7, 8, 9};
int[] all = new int[first.Length + second.Length];
Array.Copy(first, 0, all, 0, first.Length);
Array.Copy(second, 0, all, first.Length, second.Length);
// all は {1, 2, 7, 8, 9} になります両方の配列がインデックス 0 から始まる場合は、より短い形式 Array.Copy(source, destination, length) を使えます。
int[] source = {4, 5, 6, 7};
int[] destination = new int[3];
Array.Copy(source, destination, 3);
// destination は {4, 5, 6} になりますチャレンジ
簡単文字列の配列と文字列 item を受け取る、AddToEnd という名前のメソッドを作成してください。配列のすべての要素を同じ順序で保持し、末尾に item を追加した新しい配列を返します。
たとえば、AddToEnd(new string[] {"a", "b", "c"}, "d") は ["a", "b", "c", "d"] を返します。
新しい配列に要素をコピーするには、Array.Copy() を使用してください。
入力形式(2行):
- 1行目:カンマで区切られた配列の要素(例:
a,b,c) - 2行目:追加する要素(例:
d)
出力形式:新しい配列の要素をカンマとスペースで区切ったもの(例:a, b, c, d)
自分で試してみよう
using System;
public class Program {
public static string[] AddToEnd(string[] arr, string item) {
// ここにコードを書いてください
}
public static void Main(string[] args) {
string[] arr = Console.ReadLine().Split(',');
string item = Console.ReadLine();
string[] result = AddToEnd(arr, item);
Console.WriteLine(string.Join(", ", result));
}
}このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。
基礎のすべてのレッスン
自分で練習してみよう: C#オンラインコンパイラ