.NET C#,VB.NET,VC.NET
■配列のコピー(複製)全体コピー/部分コピー
配列全体のコピー(或いは部分コピー)のサンプルです。
C#
byte[] a = { 1,2,3,4,5 };
byte[] b;
//----------------------------------------
// 配列全体の複製
// aをbへコピーします。
// 以下のいずれの方法も同じ結果となります。
// ※b = a; とすると、bはaの参照となるので複製とは意味が異なります。
//----------------------------------------
// aのクローンを作成
b = (byte[])a.Clone();
// ArrayクラスのCopyメソッドを使う(第三パラメータはコピーする要素数。この場合は全体)
System.Array.Copy( a, b, a.Length );
// CopyToメソッドを使う(第二パラメータはコピーを開始するインデックス)
a.CopyTo( b, 0 );
// 配列bの全要素を出力
Console.WriteLine( "配列aの複製↓" );
foreach( byte data in b )
Console.Write( "{0} ", data );
//----------------------------------------
// 配列を部分的に複製
//----------------------------------------
// 新しく3つ分の配列を用意
b = new byte[3];
// 配列aの[2]〜後ろを配列bの[0]〜に3個分複製
System.Array.Copy( a, 2, b, 0, 3 );
// 配列bの全要素を出力
Console.WriteLine( "\r\n\r\n配列aの部分複製↓" );
foreach( byte data in b )
Console.Write( "{0} ", data );
VB.NET
Dim a() As Byte = {1, 2, 3, 4, 5}
Dim b() As Byte
'----------------------------------------
' 配列全体の複製
' aをbへコピーします。
' 以下のいずれの方法も同じ結果となります。
' ※b = a とすると、bはaの参照となるので複製とは意味が異なります。
'----------------------------------------
' aのクローンを作成
b = a.Clone()
' ArrayクラスのCopyメソッドを使う(第三パラメータはコピーする要素数。この場合は全体)
System.Array.Copy(a, b, a.Length)
' CopyToメソッドを使う(第二パラメータはコピーを開始するインデックス)
a.CopyTo(b, 0)
' 配列bの全要素を出力
Console.WriteLine("配列aの複製↓")
For Each data As Byte In b
Console.Write("{0} ", data)
Next
'----------------------------------------
' 配列を部分的に複製
'----------------------------------------
' 新しく3つ分の配列を用意
b = New Byte() {0, 0, 0}
' 配列aの[2]〜後ろを配列bの[0]〜に3個分複製
System.Array.Copy(a, 2, b, 0, 3)
' 配列bの全要素を出力
Console.WriteLine(ControlChars.CrLf + ControlChars.CrLf + "配列aの部分複製↓")
For Each data As Byte In b
Console.Write("{0} ", data)
Next
VC.NET
Byte a[] = { 1,2,3,4,5 };
Byte b[];
//----------------------------------------
// 配列全体の複製
// aをbへコピーします。
// 以下のいずれの方法も同じ結果となります。
// ※b = a; とすると、bはaの参照となるので複製とは意味が異なります。
//----------------------------------------
// aのクローンを作成
b = dynamic_cast<Byte[]>(a->Clone());
// ArrayクラスのCopyメソッドを使う(第三パラメータはコピーする要素数。この場合は全体)
System::Array::Copy( a, b, a.Length );
// CopyToメソッドを使う(第二パラメータはコピーを開始するインデックス)
a.CopyTo( b, 0 );
// 配列bの全要素を出力
Console::WriteLine( S"配列aの複製↓" );
for ( int n = 0; n < b->Length; n ++ )
Console::Write( S"{0} ", b[n].ToString());
//----------------------------------------
// 配列を部分的に複製
//----------------------------------------
// 新しく3つ分の配列を用意
b = new Byte[3];
// 配列aの[2]〜後ろを配列bの[0]〜に3個分複製
System::Array::Copy( a, 2, b, 0, 3 );
// 配列bの全要素を出力
Console::WriteLine( S"\r\n\r\n配列aの部分複製↓" );
for ( int n = 0; n < b->Length; n ++ )
Console::Write( S"{0} ", b[n].ToString());
【実行結果】
配列aの複製↓
1 2 3 4 5
配列aの部分複製↓
3 4 5
トップ > .NET C#,VB.NET,VC.NET
Copyright (C) 2005.09 〜 By Shougo Suzaki