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

配列データ構造体には、同じ型の複数の変数を格納できます。You can store multiple variables of the same type in an array data structure. 配列は、要素の型を指定することで宣言します。You declare an array by specifying the type of its elements. 配列に任意の型の要素を格納する場合は、その型として object を指定できます。If you want the array to store elements of any type, you can specify object as its type. C# の統一型システムでは、すべての型 (定義済み、ユーザー定義、参照型、および値の型) が、直接または間接的に Object を継承します。In the unified type system of C#, all types, predefined and user-defined, reference types and value types, inherit directly or indirectly from Object.

type[] arrayName;

Example

次の例では、1 次元配列、多次元配列、およびジャグ配列を作成しています。The following example creates single-dimensional, multidimensional, and jagged arrays:

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 };
    }
}

配列の概要Array overview

配列には、次の特徴があります。An array has the following properties:

  • 配列は、1 次元多次元、またはジャグのいずれかになります。An array can be single-dimensional, multidimensional or jagged.
  • 次元数と各次元の長さは、配列インスタンスの作成時に設定されます。The number of dimensions and the length of each dimension are established when the array instance is created. インスタンスの有効期間中にこれらの値を変更することはできません。These values can't be changed during the lifetime of the instance.
  • 数値配列要素の既定値はゼロに設定され、参照要素は null に設定されます。The default values of numeric array elements are set to zero, and reference elements are set to null.
  • ジャグ配列は配列の配列です。そのため、配列要素は参照型で、null に初期化されます。A jagged array is an array of arrays, and therefore its elements are reference types and are initialized to null.
  • 配列には、ゼロから始まるインデックスが付けられます。n 個の要素を含む配列には、0 から n-1 までのインデックスが付けられます。Arrays are zero indexed: an array with n elements is indexed from 0 to n-1.
  • 配列の要素および配列型は、どのような型でもかまいません。Array elements can be of any type, including an array type.
  • 配列型は、抽象基本型 Array から派生した参照型です。Array types are reference types derived from the abstract base type Array. この型は IEnumerableIEnumerable<T> を実装するので、C# のすべての配列で foreach 反復処理を使用できます。Since this type implements IEnumerable and IEnumerable<T>, you can use foreach iteration on all arrays in C#.

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

C# の配列は、実際はオブジェクトです。C や C++ の場合のように、単なるアドレス指定可能な連続メモリ領域ではありません。In C#, arrays are actually objects, and not just addressable regions of contiguous memory as in C and C++. Array はすべての配列型の抽象基本データ型で、Array is the abstract base type of all array types. Array のプロパティとその他のクラス メンバーを使用できます。You can use the properties and other class members that Array has. この例としては、Length プロパティを使用して、配列の長さを取得します。An example of this is using the Length property to get the length of an array. numbers 配列の長さ 5lengthOfNumbers という変数に代入するコードは、次のようになります。The following code assigns the length of the numbers array, which is 5, to a variable called lengthOfNumbers:

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

Array クラスには、配列の並べ替え、検索、コピーを行うための便利なメソッドやプロパティが他にも多数用意されています。The Array class provides many other useful methods and properties for sorting, searching, and copying arrays. 次の例では、Rank プロパティを使用して、配列の次元数を表示します。The following example uses the Rank property to display the number of dimensions of an array.

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.

関連項目See also

詳細については、「C# 言語の仕様」を参照してください。For more information, see the C# Language Specification. 言語仕様は、C# の構文と使用法に関する信頼性のある情報源です。The language specification is the definitive source for C# syntax and usage.