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

投稿者: Anonymous

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

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

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

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

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

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

解決

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

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

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

回答者: Anonymous

Leave a Reply

Your email address will not be published. Required fields are marked *