警告CS0649: Field 永远不会赋值给,并且始终将其默认值为null
本文关键字:null 默认值 赋值 Field CS0649 fieldname 永远 警告 | 更新日期: 2023-09-27 18:18:33
声明事件时,如
public EventHandler<EventArgs> test;
我得到标题编译器警告。
突出显示"test"事件的直接上方声明了完全相同的语法,并在同一个类中工作。
本质上它不允许我在这个类中声明另一个事件,EventArgs或任何其他类型。如果我注释掉声明和raise语句,编译并执行没有问题。
如果我忽略警告并运行,在尝试引发事件时,如
test(this,EventArgs.Empty);
得到一个空引用异常,是什么给的,我不明白一个事件如何得到分配放在第一位?
你的例子没有声明一个事件,它声明了一个可以分配给委托的公共字段。
生成事件的语法是:
public event EventHandler<EventArgs> test;
即使这样,如果没有人注册事件处理程序,事件将为空,因此您必须在尝试调用它之前测试test
不是空。
如果事件附加了其他类,则为非空:
instanceOfMyClass.text += AnEventHandlerMethod;
查看Msdn上的events教程