Array.Copyメソッドでは、複写先を複写元と同一の配列にすることが出来ます。 この際、複写先と複写元の一部が重なっていても問題なく複写されます。
Array.Copyメソッドで配列自身へ複写する
Imports System
Class Sample
Shared Sub Main()
' 複写元の配列
Dim arr() As Integer = {0, 1, 2, 3, 4}
' arrの部分配列(インデックス0から3個分)をarr自身のインデックス2以降にコピー
Array.Copy(arr, 0, arr, 2, 3)
For Each elem As Integer In arr
Console.Write("{0}, ", elem)
Next
Console.WriteLine()
End Sub
End Class
実行結果
0, 1, 0, 1, 2,
このように、Array.Copyメソッドはmemcpy
ではなくmemmove
に相当する動作となります。