Array.Copyメソッドは、Array.Cloneメソッドとは異なり配列の内容を既に存在する別の配列に複写します。 引数で複写する長さ(要素数)を指定できるので、配列の途中までをコピーするということも出来ます。 当然、複写先の配列は複写元と同じがそれ以上の長さを持っている必要があります。 Array.Copyメソッドも、Array.Cloneメソッドと同様要素の簡易コピーを行います。
Array.Copyメソッドで1次元配列を別の配列に複写する
Imports System
Class Sample
Shared Sub Main()
' 複写元の配列
Dim arr1() As Integer = {0, 1, 2, 3, 4}
' 初期化されていない配列を確保
Dim arr2(4) As Integer
For Each elem As Integer In arr2
Console.Write("{0}, ", elem)
Next
Console.WriteLine()
' arr1の要素の先頭から3個分をarr2に複写
Array.Copy(arr1, arr2, 3)
For Each elem As Integer In arr2
Console.Write("{0}, ", elem)
Next
Console.WriteLine()
' arr1の全要素をarr2に複写
Array.Copy(arr1, arr2, arr1.Length)
For Each elem As Integer In arr2
Console.Write("{0}, ", elem)
Next
Console.WriteLine()
End Sub
End Class
実行結果
0, 0, 0, 0, 0, 0, 1, 2, 0, 0, 0, 1, 2, 3, 4,
配列のバイト表現を別の配列へ転写する目的(バイト列としてのコピー)にはBuffer.BlockCopyメソッドを使うことができます。 詳しくはバイト列操作 §.BlockCopyメソッドを参照してください。
Array.Copyメソッドは、複写元と複写先に同じ配列を指定することができます。 またArray.Copyメソッドの動作は、memcpy
ではなくmemmove
相当の動作になります。 詳しくは§.同一配列への複写を参照してください。