警告CS0649:字段<fieldname>永远不会分配给,并且始终具有其默认值null </fieldname>

时间:2011-12-22 18:13:33

标签: c# events

声明

等事件时
 public EventHandler<EventArgs> test;

我收到了标题编译器警告。

突出显示“测试” 直接在它上面的事件被声明为完全相同的语法并且在同一个类中工作。

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

如果我忽略警告并且在尝试举起事件时运行,例如

test(this,EventArgs.Empty);

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

1 个答案:

答案 0 :(得分:2)

您的示例未声明事件,它声明了可以分配代理的公共字段。

使事件成为的语法是:

public event EventHandler<EventArgs> test;

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

如果某个其他类附加到事件上,它将为非null:

instanceOfMyClass.text += AnEventHandlerMethod;

查看events tutorial on Msdn.