以下は正常にコンパイルされます。
struct Foo {}
void Test()
{
Foo foo;
foo.ToString();
}
次の例では、「割り当てられていないローカル変数の使用」というコンパイル エラーが発生します。
struct Foo
{
int i;
}
void Test()
{
Foo foo;
foo.ToString();
}
最初のケースでは、構造体にはメンバーがないため、初期化する必要がないという何らかの推論がコンパイラによって行われたようです。しかし、これが私にとって意味があるかどうかはわかりません。コンパイラは、foo
変数を として初期化することを強制した可能性がありますnew Foo()
。
では、C# でアクセスする前にすべてのローカル変数を初期化する必要がある場合、最初の例がコンパイルされるのはなぜですか?