以下编译成功:
struct Foo {}
void Test()
{
Foo foo;
foo.ToString();
}
而以下产生“使用未分配的局部变量”编译错误。
struct Foo
{
int i;
}
void Test()
{
Foo foo;
foo.ToString();
}
似乎在第一种情况下,编译器做出了某种推断,即由于结构没有成员,因此不需要初始化它们。但我不确定这对我是否有意义。编译器可能会强制您将foo
变量初始化为new Foo()
.
那么,如果在 C# 中所有局部变量都必须在访问之前进行初始化,那么为什么第一个示例会编译?