RoK*_*oKK 3 c# events struct compiler-errors reference
编译此代码时出错:
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'
}
}
Run Code Online (Sandbox Code Playgroud)
您好!
编译器说:"使用未分配的局部变量'vector'"并指向返回值.在我看来,Vector2成为一个引用类型(没有事件成员,它正常行事).怎么了?
Rob*_*ker 14
在C#中,除非要初始化所有字段,否则仍需要"new"一个结构来调用构造函数.你没有分配EventHandler成员'trigger'.
尝试分配"触发器"或使用:
Vector2 vector = new Vector2()
Run Code Online (Sandbox Code Playgroud)
新对象未在堆上分配,它仍在功能堆栈上分配.
引用MSDN:
使用new运算符创建结构对象时,会创建它并调用相应的构造函数.与类不同,可以在不使用new运算符的情况下实例化结构.如果不使用new,则字段将保持未分配状态,并且在 初始化所有字段之前无法使用该对象.