0
A
回答
0
这里发生了一些事情,礼貌的语言结构。让我们来分析一下:
首先,您要创建一个公共事件:
public event EventHandler Updated;
然后,你就初始化为 “默认处理程序”:
public event EventHandler Updated = xxx;
凡xxx
应类型EventHandler
的处理程序。以下是该签名:
public delegate void EventHandler(object sender, EventArgs e);
任何希望订阅该事件的人都应该符合该签名。
对于一些奇怪的原因,对此我并不了解,编译器允许你提供一个默认的实现,它不符合预期的签名(???)(属性初始化):
public event EventHandler Updated = delegate { };
注意没有参数。这是签名应该是什么(它编译罚款):
public event EventHandler Updated = delegate(object sender, EventArgs e){ };
,您将不得不访问代码中的对象。
因此,本质上,您提供了一个默认的内联委托方法,该方法在您触发Updated
事件时执行。这个代表当然没有任何指示(一个空白块)。您可以通过稍微改变它测试:
public event EventHandler Updated = delegate { Console.Writeline("It fired!"); };
如果有人知道允许这种类型参数的代表的理由,并可以增加这个答案这将是巨大的。
0
它使事件处理程序执行一个空的代码块。通常它会被分配为null,但是在触发代码中,您需要检查处理程序是否为null。有人认为这使得代码更清洁
+0
我不同意它使代码更清洁。检查null非常简单,只需调用“?”。 –
1
这创建一个新的anonymous method与一个空的身体并将其附加到事件。这是一个默认的事件处理程序,它不会做任何事情。
相关问题
- 1. Vb.net声明和初始化
- 2. 初始化在声明
- 3. c声明和初始化
- 4. 声明和初始化在java中
- 5. 初始化静态final变量声明与初始化在Application.OnCreate()
- 6. 变量初始化并声明后可能尚未初始化
- 7. scala - 未初始化的变量声明
- 8. C++:变量声明初始化顺序
- 9. 声明和初始化全局变量
- 10. Java - 对象声明和初始化
- 11. 声明类实例及其初始化
- 12. Maya MEL变量声明和初始化
- 13. 首选声明/初始化方法
- 14. 无法声明/初始化CGPoint数组
- 15. 声明和初始化结构变量
- 16. 声明和初始化三维数组
- 17. _mainViewController在哪里声明和初始化?
- 18. (函数(){})()声明/初始化JavaScript函数
- 19. 初始化课外数组声明
- 20. Java数组初始化后声明
- 21. 构造函数声明和初始化的初始化之间的区别
- 22. 在头文件中声明并初始化一个向量
- 23. Catch ngRepeat初始化事件
- 24. 如何声明C#Web用户控件但停止初始化?
- 25. PIC18变量声明和初始化失败硬件
- 26. 在C++中使用&&的声明和初始化
- 27. 如何在lang中评估声明和初始化的速记?
- 28. PLC-ST:如何初始化声明中的结构?
- 29. 在Java中没有初始化和用法的字段声明
- 30. Java中的二维数组声明和初始化
这是一个“匿名”的功能,它什么都不做。 –
你对'delegate'关键词做了哪些研究,你发现了什么,以及它如何回答你的问题? – Servy