C#
 Computer >> コンピューター >  >> プログラミング >> C#

C#のArray.ConstrainedCopy()メソッドの使い方を解説

概要

C#のArray.ConstrainedCopy()メソッドは、コピー元の配列(ソース配列)の指定したインデックスから要素の範囲を取り出し、別の配列(コピー先)の指定したインデックス以降に貼り付けるための静的メソッドです。一般的なArray.Copy()メソッドとよく似ていますが、ConstrainedCopy()には「コピー操作が完全に成功しない場合、コピー先の配列に一切の変更が加えられない」という強力な保証がある点が大きな特徴です。

構文

public static void ConstrainedCopy(Array sourceArr, int sourceIndex, Array destinationArr, int destinationIndex, int length);

パラメータ

  • sourceArr − コピー元となるデータを含む配列
  • sourceIndex − sourceArr内でコピーを開始する位置を表す32ビット整数
  • destinationArr − コピー先としてデータを受け取る配列
  • destinationIndex − destinationArr内でデータの格納を開始する位置を表す32ビット整数
  • length − コピーする要素数を表す32ビット整数

実装例

それでは、Array.ConstrainedCopy()メソッドを使った具体的なサンプルコードを見てみましょう。

using System;

public class Demo {
    public static void Main() {
        int[] arrDest = new int[10];
        Console.WriteLine("配列の要素...");
        int[] arrSrc = { 20, 50, 100, 150, 200, 300, 400 };
        for (int i = 0; i < arrSrc.Length; i++) {
            Console.Write("{0} ", arrSrc[i]);
        }
        Console.WriteLine();
        // ソース配列のインデックス3から4つの要素を、コピー先配列のインデックス0へコピー
        Array.ConstrainedCopy(arrSrc, 3, arrDest, 0, 4);
        Console.WriteLine("コピー先の配列:");
        for (int i = 0; i < arrDest.Length; i++) {
            Console.Write("{0} ", arrDest[i]);
        }
    }
}

出力結果

上記のコードを実行すると、次のような出力が得られます。

配列の要素...
20 50 100 150 200 300 400
コピー先の配列:
150 200 300 400 0 0 0 0 0 0

この例では、コピー元配列arrSrcのインデックス3(値150)から4つの要素(150、200、300、400)が、コピー先配列arrDestの先頭にコピーされています。コピーされなかった残りの要素は初期値の0のままになっている点にも注目してください。

補足:主な例外とConstrainedCopy()の特徴

Array.ConstrainedCopy()メソッドは、引数や配列の状態によって以下のような例外をスローします。

  • ArgumentNullException − sourceArrまたはdestinationArrがnullの場合
  • RankException − コピー元とコピー先の配列の次元(ランク)が異なる場合
  • InvalidCastException − 両方の配列の要素型に互換性がない場合
  • ArgumentOutOfRangeException − 指定したインデックスが配列の範囲外の場合
  • ArgumentException − lengthに負の値が指定された場合

特に覚えておきたいのは、このメソッドがアトミックな動作を保証しているという点です。つまり、コピー処理が途中で失敗した場合でも、コピー先の配列は一切変更されず、呼び出し前の状態が保たれます。この特性により、部分的な書き込みによるデータ破損を防ぎたい場面では、Array.Copy()よりも安全に利用できます。

  1. JavaScriptのArray.from()メソッドとは?使い方と実例をわかりやすく解説

    Array.from()メソッドは、配列風オブジェクト(array-like)や反復可能オブジェクト(iterable)から、新しい配列オブジェクトを作成するための便利なメソッドです。文字列、Map、Set、NodeListなど、さまざまなデータを手軽に配列へ変換できます。 Array.from()の基本的な動作 例えば、文字列「HelloWorld」に対してArray.from()を使用すると、1文字ずつ分割された新しい配列が生成されます。以下に実際のコード例を示します。 サンプルコード <!DOCTYPE html> <html lang="ja"&g

  2. JavaScriptのArray.entries()メソッドとは?使い方とサンプルコードを解説

    Array.entries()メソッドとはJavaScript の Array.entries() メソッドは、配列内の各要素を「インデックス(キー)と値」のペアとして格納した、新しい Array Iterator オブジェクトを返します。このオブジェクトは反復可能(iterable)であるため、for...of ループやスプレッド構文などを使って、要素を一つずつ取り出すことができます。基本構文arr.entries()サンプルコード以下は、Array.entries() メソッドを使用して、配列の要素をキー/値ペアとして表示するコード例です。<!DOCTYPE html> <