Visual Basic 中学校 > Visual Basic サンプル集 > Visual Basic サンプル集目次 >
VB.NET 2002, VB.NET 2003, VB2005
配列を別の配列にコピーする
1.まるごとコピーする例
Dim i1() As Integer = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9} Dim i2() As Integer
i2 = i1.Clone
この例では i2 の値は 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 となる。
メモ:一般的なオブジェクトのコピー方法と同じです。
2.コピーする要素数を指定する例
以下の例では、配列の6番目の要素までをコピーする。
Dim i1() As Integer = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9} Dim i2() As Integer = Array.CreateInstance(GetType(Integer), 8)
Array.Copy(i1, 0, i2, 0, 6)
この例では i2 の値は 0, 1, 2, 3, 4, 5, 0, 0 となる。
メモ:コピー先の配列はあらかじめコピー数以上の要素数を持っている必要があります。
3.コピーする位置を指定する例
以下の例では、配列の2番目の要素から4つを、コピー先の要素の3番目以降にコピーする。
Dim i1() As Integer = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9} Dim i2() As Integer = Array.CreateInstance(GetType(Integer), 8)
Array.Copy(i1, 1, i2, 2, 4)
この例では i2 の値は 0, 0, 1, 2, 3, 4, 0, 0 となる。
メモ:コピー先の配列はあらかじめコピー数以上の要素数を持っている必要があります。
4.コピーするバイト数を指定する例
以下の例では、コピー元の配列から20バイトをコピー先の配列にコピーする。Integer型は要素1つで4バイトあることに注意すること。
Dim i1() As Integer = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9} Dim i2() As Integer = Array.CreateInstance(GetType(Integer), 8)
Buffer.BlockCopy(i1, 0, i2, 0, 20)
この例では i2 の値は 0, 1, 2, 3, 4, 0, 0, 0 となる。
メモ:Buffer.BlockCopyはコピーする位置をバイト単位で調節することができるので、連続したビットシフトのような演算も可能です。
VB6で配列をまるごとコピーするには、i2 = i1
のように単純に代入するだけです。このとき、i2は動的配列である必要があります。バイト位置やバイト数を指定してコピーするにはAPI関数を使うこともできますが、一般的にはループを回して行います。