我有一位代表,说:
public delegate void MyDelegate();
我有一个事件,比如说:
public MyDelegate MyEvent;
在调用事件时,我收到一条错误消息:
“MyEvent + =期待......”
如何解决此问题?
答案 0 :(得分:4)
您只能从声明它的类中调用该事件。在任何其他地方,您只能通过运算符+=
和-=
从事件委托中添加或删除处理程序,因此会显示错误消息。
答案 1 :(得分:4)
+ =与事件相关联,而不仅仅是委托的声明。您缺少'event'关键字。
public **event** MyDelegate MyEvent;
一旦你有了这个关键字,+ =将适合你。
答案 2 :(得分:1)
如果您尝试使用其他类中的事件,则需要了解事件和委托之间的区别。事件只是封装了“订阅”和“取消订阅”方面,而不是“提升事件”。 (事实上在IL中你可以拥有“举起活动”的成员,但C#不支持它。)
有关详细信息,请参阅my article on events and delegates。
答案 3 :(得分:0)
另外,您可能需要查看有关avoiding checking for null delegates
的帖子答案 4 :(得分:0)
查看Chris Sells .NET Delegates: A C# Bedtime Story,获取代表和活动的精彩指南。信息丰富且非常有趣。