从文档:
与类不同,可以在不使用新运算符的情况下实例化结构.
那我为什么会收到这个错误:
使用未分配的局部变量'x'
当我尝试这样做?
Vec2 x;
x.X = det * (a22 * b.X - a12 * b.Y);
x.Y = det * (a11 * b.Y - a21 * b.X);
Run Code Online (Sandbox Code Playgroud)
Vec2 x结构在哪里?
以下编译成功:
struct Foo {}
void Test()
{
Foo foo;
foo.ToString();
}
Run Code Online (Sandbox Code Playgroud)
以下产生"使用未分配的局部变量"编译错误.
struct Foo
{
int i;
}
void Test()
{
Foo foo;
foo.ToString();
}
Run Code Online (Sandbox Code Playgroud)
看起来在第一种情况下,编译器做了某种推断,因为结构没有成员,所以不需要初始化它们.但我不确定这对我有意义.编译器可能强制您将foo变量初始化为new Foo().
因此,如果在C#中所有局部变量必须在访问之前初始化,为什么第一个示例编译?