C# クラス型配列変数の初期化について


はじめまして、一昨日からC#をやり始めました初心者です。

参考書で、クラス型配列変数の初期化について書かれていたのですが

[code]

    void Start() {
      Person[] parr = { new Person(), new Person() };
      parr[0].firstname = "太郎";
      parr[0].lastname = "山田";
      Debug.Log (parr[0].GetFullName("★"));
    }
    
[/code]

となっており、２行目のnew Person ()を何故２つ書いているのかがわかりません。

`Person[] parr = { new Person() };`

でも同様の結果となったのでますます混乱しています。  
わかる方がいらっしゃったらご教授頂きたいです、よろしくお願いします。




配列初期化子は指定した値の数と同じ長さの配列を作成し、各値を先頭から順に設定していきます。  
ですので値を1個しか書かなかった場合は2番目の要素`parr[1]`にアクセスすることができず、例外が発生します。また`parr.Length`も当然変化します。

なお`parr[0]`と`parr[1]`は同じ`new Person()`が指定されていますが、参照型では別のオブジェクトになります。

参考書でなぜ先頭しか使っていないのかはわかりません。配列の使用例としては不適切に思えます。




配列初期化子は指定した値の数と同じ長さの配列を作成し、各値を先頭から順に設定していきます。  
ですので値を1個しか書かなかった場合は2番目の要素`parr[1]`にアクセスすることができず、例外が発生します。また`parr.Length`も当然変化します。

なお`parr[0]`と`parr[1]`は同じ`new Person()`が指定されていますが、参照型では別のオブジェクトになります。

参考書でなぜ先頭しか使っていないのかはわかりません。配列の使用例としては不適切に思えます。

