配列の初期化のテクニック

プログラミングC# 第6版 7.1.1


ちょっと第6章の例外の話は一旦飛ばします。ってことで第7章、配列の話ですね。

配列の初期化は以下のようにできます。

using System;

class Program {
    static void Main () {
        string[] strs = new string[] {
            "foo",
            "bar",
        };
        
        foreach(string str in strs) {
            Console.WriteLine(str);
        }
    }
}
$ main
foo
bar

しかもこの初期化、配列の宣言時だけでなく、配列の変更時でもできるそうです。

using System;

class Program {
    static void Main () {
        string[] strs;
        
        // 宣言時じゃなくても動く
        strs = new string[] {
            "foo",
            "bar",
        };
        
        foreach(string str in strs) {
            Console.WriteLine(str);
        }
    }
}
$ main
foo
bar

面白いですね。これの使い道ですが、例えば配列を受け取るような関数を呼び出すときに使えます。

using System;

class Program {
    static void Output (string[] strs) {
        foreach(string str in strs) {
            Console.WriteLine(str);
        }
    }
    
    static void Main () {
        // インラインで配列の初期化
        Output(new string[] {
            "FOO",
            "BAR",
        });
    }
}
$ main
FOO
BAR

よく使われるテクニックらしいので覚えておきます。