配列 (C# プログラミング ガイド)

配列データ構造体には、同じ型の複数の変数を格納できます。 配列は、要素の型を指定することで宣言します。 配列に任意の型の要素を格納する場合は、その型として object を指定できます。 C# の統一型システムでは、すべての型 (定義済み、ユーザー定義、参照型、および値の型) が、直接または間接的に Object を継承します。

type[] arrayName;

次の例では、1 次元配列、多次元配列、およびジャグ配列を作成しています。

class TestArraysClass
{
    static void Main()
    {
        // Declare a single-dimensional array of 5 integers.
        int[] array1 = new int[5];

        // Declare and set array element values.
        int[] array2 = new int[] { 1, 3, 5, 7, 9 };

        // Alternative syntax.
        int[] array3 = { 1, 2, 3, 4, 5, 6 };

        // Declare a two dimensional array.
        int[,] multiDimensionalArray1 = new int[2, 3];

        // Declare and set array element values.
        int[,] multiDimensionalArray2 = { { 1, 2, 3 }, { 4, 5, 6 } };

        // Declare a jagged array.
        int[][] jaggedArray = new int[6][];

        // Set the values of the first array in the jagged array structure.
        jaggedArray[0] = new int[4] { 1, 2, 3, 4 };
    }
}

配列の概要

配列には、次の特徴があります。

  • 配列は、1 次元多次元、またはジャグのいずれかになります。
  • 次元数と各次元の長さは、配列インスタンスの作成時に設定されます。 インスタンスの有効期間中にこれらの値を変更することはできません。
  • 数値配列要素の既定値はゼロに設定され、参照要素は null に設定されます。
  • ジャグ配列は配列の配列です。そのため、配列要素は参照型で、null に初期化されます。
  • 配列には、ゼロから始まるインデックスが付けられます。n 個の要素を含む配列には、0 から n-1 までのインデックスが付けられます。
  • 配列の要素および配列型は、どのような型でもかまいません。
  • 配列型は、抽象基本型 から派生した参照型です。 すべての配列は IList および IEnumerable を実装します。 配列を反復処理するための foreach ステートメントを追加することができます。 1 次元配列でも IList<T> および IEnumerable<T> が実装されています。

既定値の動作

  • 値の型の場合、配列要素は既定値の 0 ビット パターンで初期化されます。要素の値は になります。
  • すべての参照型 (null 非許容を含む) に、値 が含まれます。
  • Null 許容値型の場合、HasValuefalse に設定され、要素は null に設定されます。

オブジェクトとしての配列

C# の配列は、実際はオブジェクトです。C や C++ の場合のように、単なるアドレス指定可能な連続メモリ領域ではありません。 Array はすべての配列型の抽象基本データ型で、 Array のプロパティとその他のクラス メンバーを使用できます。 この例としては、Length プロパティを使用して、配列の長さを取得します。 numbers 配列の長さ 5lengthOfNumbers という変数に代入するコードは、次のようになります。

int[] numbers = { 1, 2, 3, 4, 5 };
int lengthOfNumbers = numbers.Length;

Array クラスには、配列の並べ替え、検索、コピーを行うための便利なメソッドやプロパティが他にも多数用意されています。 次の例では、Rank プロパティを使用して、配列の次元数を表示します。

class TestArraysClass
{
    static void Main()
    {
        // Declare and initialize an array.
        int[,] theArray = new int[5, 10];
        System.Console.WriteLine("The array has {0} dimensions.", theArray.Rank);
    }
}
// Output: The array has 2 dimensions.

関連項目

詳細については、「C# 言語の仕様」を参照してください。 言語仕様は、C# の構文と使用法に関する信頼性のある情報源です。