【发布时间】:2014-10-27 01:24:40
【问题描述】:
我在理解以下如何工作时遇到问题(代码下方的问题):
private delegate void MyDelegate(int i);
private event MyDelegate myEvent;
public void EventTests() {
//Option One
myEvent += One;
//Option Two
myEvent += delegate{ Two(true); };
//Option Three
myEvent += () => { Two(true); };
}
private void One(int i) { }
private void Two(bool j) { }
问题:
我可以理解为什么选项一有效,因为事件
myEvent期望附加一个带有 int 参数的委托。为什么选项二有效?它在事件中附加了一个签名不正确的匿名方法,不是吗?如果选项二有效,为什么选项三无效?似乎签名需要是
(int i) => { Two(true); };,而不是上面写的()。但是选项二在没有正确签名的情况下工作,那么为什么这个匿名方法会导致错误?
非常感谢。
【问题讨论】:
标签: c# events delegates anonymous-function