繁体   English   中英

警告CS0649:字段 <fieldname> 永远不会分配给,并且将始终将其默认值设置为null

[英]warning CS0649: Field <fieldname> is never assigned to, and will always have its default value null

在声明诸如此类的事件时

 public EventHandler<EventArgs> test;

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

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

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

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

test(this,EventArgs.Empty);

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

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

使该事件成为的语法是:

public event EventHandler<EventArgs> test;

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

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

instanceOfMyClass.text += AnEventHandlerMethod;

看看Msdn上事件教程。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM