1
我有如何理解下面的工作(以下代碼的問題)問題事件:訂閱使用匿名方法
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); };
而不是上面寫的()
。但是選項二沒有正確的簽名,所以爲什麼這個匿名方法會導致錯誤?
非常感謝。