.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

SEO [PR] 爆速!無料ブログ 無料ホームページ開設 無料ライブ放送