- 1. 概要
- 2. BlockCopy
1. 概要
「Buffer」は、参考サイトによれば「プリミティブ型の配列を操作します。」と、ぱっと読んだだけでは、少なくともわたりには理解しにくい。
本ページは、下記のサイトを参考にさせていただきました。
「Buffer クラス (System) 」
「【.NET】指定した範囲で配列をコピーする方法の速度比較【C# 配列】」
2. BlockCopy
「BlockCopy」というメソッドがありまして。
参考サイトには「コピー先の配列の指定したオフセット位置を先頭として、コピー元の配列の指定したオフセットから指定数のバイトをコピーします。」と書いてあります。
配列から、配列へのコピーを行うものであります。
public static void BlockCopy (Array src, int srcOffset, Array dst, int dstOffset, int count);
「src」がコピー元で、「srcOffset」がコピー元の開始バイト位置。
「dst」がコピー先で、「dstOffset」がコピー先の開始バイト位置。
「count」というのがバイト数になります(「count」という付け方もどうだか・・・)。
using System;
using System.Runtime;
public class Program
{
static public void Main ()
{
int[] all = new int []{ 1, 2, 3, 4, 5, 6 };
int[] first = new int[3];
int[] last = new int[3];
Buffer.BlockCopy(all, 0, first, 0, sizeof(int) * first.Length);
Buffer.BlockCopy(all, sizeof(int) * first.Length, last, 0, sizeof(int) * last.Length);
for (int i=0; i<first.Length; i++)
{
Console.WriteLine("first["+ i +"] = "+ first[i] +"");
}
for (int i=0; i<last.Length; i++)
{
Console.WriteLine("last ["+ i +"] = "+ last[i] +"");
}
}
}
てなソースを書いて、ビルド後、実行すると下記の結果が得られます。
first[0] = 1
first[1] = 2
first[2] = 3
last [0] = 4
last [1] = 5
last [2] = 6
|