C#のBuffer.SetByteメソッドの使い方とサンプルコード
Buffer.SetByte()メソッドは、指定した配列内の特定の場所(バイトオフセット)に、指定した値を1バイトとして設定するためのメソッドです。配列をバイト単位で直接操作したい場合に便利です。
基本的な使い方
まず、操作対象となる配列を用意します。
int[] arr = { 3, 4, 12 };
次に、SetByte()を使って指定位置に値を書き込みます。
Buffer.SetByte(arr, 3, 20);
この例では、配列の先頭から3バイト目(インデックス3)に「20」という値を設定しています。
サンプルコード
以下は、Buffer.SetByte()を使った完全なサンプルプログラムです。
using System;
using System.Text;
public class Demo {
public static void Main() {
int[] arr = { 3, 4, 12 };
Console.WriteLine("Initial Array...");
// バイト配列としてループ処理
for (int i = 0; i < Buffer.ByteLength(arr); i++) {
Console.WriteLine(Buffer.GetByte(arr, i));
}
Buffer.SetByte(arr, 3, 20);
Console.WriteLine("New Array...");
// 変更後のバイト配列をループ処理
for (int i = 0; i < Buffer.ByteLength(arr); i++) {
Console.WriteLine(Buffer.GetByte(arr, i));
}
}
}
実行結果
Initial Array... 3 0 0 0 4 0 0 0 12 0 0 0 New Array... 3 0 0 20 4 0 0 0 12 0 0 0
解説
この実行結果から、int型は1要素あたり4バイトで構成されていることがわかります。初期状態では、各要素の値(3・4・12)がそれぞれ先頭バイトに格納され、残りの3バイトは0になっています。
その後、Buffer.SetByte(arr, 3, 20)を実行することで、配列全体を連続したバイト列とみなしたときの3バイト目(つまり最初の要素「3」を構成する2番目のバイト)が「20」に書き換えられていることが確認できます。
なお、読み取りにはBuffer.GetByte()、配列全体のバイト数の取得にはBuffer.ByteLength()を使用しており、これらを組み合わせることで、プリミティブ型の配列をバイトレベルで柔軟に操作できます。
-
C#のArray.ConstrainedCopy()メソッドの使い方を解説
概要C#のArray.ConstrainedCopy()メソッドは、コピー元の配列(ソース配列)の指定したインデックスから要素の範囲を取り出し、別の配列(コピー先)の指定したインデックス以降に貼り付けるための静的メソッドです。一般的なArray.Copy()メソッドとよく似ていますが、ConstrainedCopy()には「コピー操作が完全に成功しない場合、コピー先の配列に一切の変更が加えられない」という強力な保証がある点が大きな特徴です。構文public static void ConstrainedCopy(Array sourceArr, int sourceIndex, Array d
-
C#の多次元配列とは?2次元配列の宣言方法と使い方を実例付きで解説
C#では、多次元配列を扱うことができます。int型の2次元配列は、次のように宣言します。int[] a;多次元配列の中で最もシンプルな形式が2次元配列です。2次元配列とは、1次元配列を要素として持つ配列、すなわち「配列の配列」のような構造をイメージすると分かりやすいでしょう。例えば、次の図は3行4列の2次元配列を表しています。多次元配列の使用例ここからは、実際にC#で多次元配列を操作するサンプルコードを見ていきましょう。以下の例では、5行2列の2次元配列を宣言・初期化し、入れ子になったforループですべての要素を出力します。using System; namespace ArrayApplic