c# - C# NullReferenceException 而 EventHandler
问题描述
即使我在 Start Methode 中订阅了事件,我也会收到 NullReferenceException。
我在哪里创建我的活动:
public EventHandler<CustomArgs> ClickEvent;
private void OnMouseDown()
{
Debug.Log("Clicked");
CustomArgs args = new CustomArgs();
args.Name = gebäude.ToString();
args.Level = Level;
args.MenuePosition = Menue;
ClickEvent?.Invoke(this, args);
}
我在哪里订阅我的活动:
private void Start()
{
miene.ClickEvent += ClickEvent;
Debug.Log("Event Addedet");
}
private void ClickEvent(object sender, CustomArgs e)
{
//some useless stuff
}
解决方案
事件是null
没有人订阅的时候。幸运的是,现代 C# 使这变得简单:
ClickEvent?.Invoke(this, args);
对于较旧的语言版本,您需要更加详细:
var handler = ClickEvent;
if (handler != null) handler(this, args);
它们的意思完全相同。
作为一个小的优化,您可能希望推迟创建CustomArgs
对象,直到您知道有人关心,但是:
ClickEvent?.Invoke(this, new CustomArgs {
Name = gebäude.ToString(),
Level = Level,
MenuePosition = Menue
});
推荐阅读
- php - 使用 Events Calendar Pro 动态填充 GF 下拉菜单
- c# - 如果更改类中父实体的导航属性,是否需要手动更改外键?
- json - ROS服务保存文件失败
- python - Python:如何在用户输入 3 个无效值后结束程序并防止以下函数在不使用系统退出/中断的情况下运行?
- assembly - 如何在知道指针的情况下获取内存地址
- typescript - 如何在@types repo 中获取所有 Typescript 定义文件的完整列表?
- python - sns:如何获取令牌以使用 boto 确认订阅?
- android - Android Freemarker 类合并
- java - 在“FirebaseDatabase.getInstance()”中只有 getInstance 部分显示未解析的符号?
- reactjs - 在 React Native 中添加数据并保存状态