hakeの日記

Windows環境でプログラミングの勉強をしています。

C# - 配列

言語仕様としての配列、要素数が予め決まっている場合に使用する。要素数が未定の場合や追加/削除を行う場合はコレクションを使用した方が良い。
初期設定値を書かない場合は new 演算子を使用して宣言する。初期値がある場合は不要となる。多次元配列は[ ]の中にカンマで区切って要素を宣言する。
初期値を書く場合、最後の要素の後にカンマがあっても良い。

    型[ ] 変数名 = new 型[要素数]
    型[ , ] 変数名 = new 型[要素数, 要素数]

ジャグ配列の場合は new 演算子を書かなくてはならない。またジャグ配列の要素の表し方は [ , ] ではなく [ ][ ] の様にする。

    型[ ][ ]変数名 = new 型[ ][ ]{  new 型[ ]{ 値, ……}, new 型[ ]{ 値, ……}, ……}

素数は、一次元の通常配列とジャグ配列の場合はLengthプロパティで、多次元配列の場合はGetLength(次元)メソッドで取得する。

using System;

//配列


class MyMain
{
    static void Main(string[] args)
    {
        //宣言のみ
        int[] d1 = new int[3];
        //初期値設定
        d1[0] = 0;
        d1[1] = 1;
        d1[2] = 2;
        PrintArray(d1);

        //宣言時に初期値を設定
        int[] d2 = {10, 20, 30};
        PrintArray(d2);

        //多次元配列
        int[,] d3 = {{1, 2, 3, 4}, {5, 6, 7, 8}, {9, 10, 11, 12}};
        PrintArray2(d3);

        //ジャグ配列
        int[][] d4 = new int[][]
        {
            new int[]{1, 2},
            new int[]{3, 4, 5},
            new int[]{9, 10, 11, 12},  // 最終要素の後にカンマが有っても良い
        };
        PrintArray3(d4);

    }

    //一次元配列を表示
    static void PrintArray(int[] a){
        for(var i = 0; i < a.Length; i++)
            Console.WriteLine("{0} : {1}", i, a[i]);
    }

    //二次元配列を表示
    static void PrintArray2(int[,] a){
        for(var i = 0; i < a.GetLength(0); i++)
        {
            Console.Write("[{0}, ] : ", i);
            for(var j = 0; j < a.GetLength(1); j++)
            {
                Console.Write("{0,2} ", a[i, j]);
            }
            Console.WriteLine();
        }
    }

    //ジャグ配列(二次元)を表示
    static void PrintArray3(int[][] a){
        for(var i = 0; i < a.Length; i++)
        {
            Console.Write("[{0}][] : ", i);
            for(var j = 0; j < a[i].Length; j++)
            {
                Console.Write("{0,2} ", a[i][j]);
            }
            Console.WriteLine();
        }
    }

}

 

実行結果

0 : 0
1 : 1
2 : 2
0 : 10
1 : 20
2 : 30
[0, ] :  1  2  3  4
[1, ] :  5  6  7  8
[2, ] :  9 10 11 12
[0][] :  1  2
[1][] :  3  4  5
[2][] :  9 10 11 12