//Consider this declaration
string name;
ここで、文字列変数nameは割り当てられていない変数ですが、初期化されていない場合、この宣言はname用のメモリを予約しますか?
//Consider this declaration
string name;
ここで、文字列変数nameは割り当てられていない変数ですが、初期化されていない場合、この宣言はname用のメモリを予約しますか?
未割り当てではありません。すべてのクラス/構造体はデフォルト値を受け取ります。文字列の場合はnull
.
ローカル変数の場合、最適化によって削除される傾向があります。インスタンス変数の場合、メモリが割り当てられます(C#の仕様は不明だと思います)。
メソッドのローカル変数はメモリを予約せず、その使用方法と他の変数の使用方法に応じてレジスタが割り当てられます。使用しない限り、レジスタは割り当てられません。
メソッド内に多数の変数を含めることができますが、CPU には限られた数のレジスタがあるため、コンパイラはコードを最適化してレジスタを再利用します。詳細については、「レジスターの割り当て」を参照してください。
いいえ、メモリを予約string name;
しません。