警告CS0649: Field 永远不会赋值给,并且始终将其默认值为null

本文关键字:null 默认值 赋值 Field CS0649 fieldname 永远 警告 | 更新日期: 2023-09-27 18:18:33

声明事件时,如

 public EventHandler<EventArgs> test;

我得到标题编译器警告。

突出显示"test"事件的直接上方声明了完全相同的语法,并在同一个类中工作。

本质上它不允许我在这个类中声明另一个事件,EventArgs或任何其他类型。如果我注释掉声明和raise语句,编译并执行没有问题。

如果我忽略警告并运行,在尝试引发事件时,如

test(this,EventArgs.Empty);

得到一个空引用异常,是什么给的,我不明白一个事件如何得到分配放在第一位?

警告CS0649: Field <fieldname>永远不会赋值给,并且始终将其默认值为null

你的例子没有声明一个事件,它声明了一个可以分配给委托的公共字段。

生成事件的语法是:

public event EventHandler<EventArgs> test;

即使这样,如果没有人注册事件处理程序,事件将为空,因此您必须在尝试调用它之前测试test不是空。

如果事件附加了其他类,则为非空:

instanceOfMyClass.text += AnEventHandlerMethod;

查看Msdn上的events教程