Array.Copyメソッドでは、複写先を複写元と同一の配列にすることが出来ます。 この際、複写先と複写元の一部が重なっていても問題なく複写されます。
Array.Copyメソッドで配列自身へ複写する
using System;
class Sample {
static void Main()
{
// 複写元の配列
int[] arr = {0, 1, 2, 3, 4};
// arrの部分配列(インデックス0から3個分)をarr自身のインデックス2以降にコピー
Array.Copy(arr, 0, arr, 2, 3);
foreach (var elem in arr) {
Console.Write("{0}, ", elem);
}
Console.WriteLine();
}
}
実行結果
0, 1, 0, 1, 2,
このように、Array.Copyメソッドはmemcpy
ではなくmemmove
に相当する動作となります。