编译此代码时出错:
using System; public struct Vector2 { public event EventHandler trigger; public float X; public float Y; public Vector2 func() { Vector2 vector; vector.X = 1; vector.Y = 2; return vector; // error CS0165: Use of unassigned local variable 'vector' } }
您好!
编译器说:"使用未分配的局部变量'vector'"并指向返回值.在我看来,Vector2成为一个引用类型(没有事件成员,它正常行事).怎么了?
在C#中,除非要初始化所有字段,否则仍需要"new"一个结构来调用构造函数.你没有分配EventHandler成员'trigger'.
尝试分配"触发器"或使用:
Vector2 vector = new Vector2()
新对象未在堆上分配,它仍在功能堆栈上分配.
引用MSDN:
使用new运算符创建结构对象时,会创建它并调用相应的构造函数.与类不同,可以在不使用new运算符的情况下实例化结构.如果不使用new,则字段将保持未分配状态,并且在 初始化所有字段之前无法使用该对象.