いろいろ情報があって混乱しておられるようなので、一行づつ説明しますね。
配列をnewしたときに要素に値を代入しないと、要素に初期値(初期化子というのですか?)が入っているみたいですが、
必ずしも要素に初期値が入っているとは限りません。
サンプルコードではint型の配列として宣言しているため、int型の初期値(すなわち0)で初期化された配列が準備されるだけです。
これの各型の初期値掲載されているC#かUnityの公式ドキュメントを見たいです。
https://docs.microsoft.com/ja-jp/dotnet/csharp/language-reference/keywords/default-values-table
値型であれば上記URL、参照型であればnullだと思えばOKです。
default句を使う必要が出てきたときに更に勉強を進めると良いでしょう。
※LinqでFirstOrDefaultを使い始めたときですね。
また、初期化子とは初期値と同じ意味ですか?
違います。
初期化子とは、要素の宣言と同時に値をセットすることです。
https://docs.microsoft.com/ja-jp/dotnet/csharp/programming-guide/classes-and-structs/object-and-collection-initializers
初期値とは、上の上のURLで示したとおり何も値を設定しないでインスタンス化した変数に入っている値ですね。
(値型の要素をインスタンス化するって言葉が正しいかちょっと自信ないですが)
また、クラスの初期値はnullですか?
クラスは設計図なので初期値も何も無いと思いますが…
MyClass myClass;
こう書いてあれば当然myClass
はNULLです。
以下の様にnewしてあれば当然新しいインスタンスが作られてNULLではなくなります。
var myInstance = new MyClass();
そしてMyClassの中に定義してある諸々のメンバ・プロパティは、それぞれの型ごとの初期値を持ちます。
(もちろんコンストラクタや初期化子で値をセットしてあれば、その値がセットされた状態のインスタンスとなります)
Debug.Log (arr [0]); //0 ←これを初期化子というのでしょうか?
違います。
サンプルコードを例にするなら以下のとおりです。
C#
1 //これは単純に要素数2つのint型の配列をarrとして宣言しただけ。
2 //配列の中のそれぞれの初期値は、何も設定されていないので0。
3 int[] arr = new int[2];
4 //こっちの波括弧の部分が初期化子。
5 //int型の要素2つを持ち、0番目が「2」、1番目が「3」を持つ配列を宣言した。
6 var arr2 = new int[2] { 2, 3 };
回答被っちゃったようですが、途中まで書いたのでコメントしますw
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2018/04/01 08:01