1

我有一个代表,说:

public delegate void MyDelegate();

我有一个事件,说:

public MyDelegate MyEvent;

在调用事件时,我收到一条错误消息:

“我的事件 += 预期......”

我该如何解决这个问题?

4

5 回答 5

4

+= is associated with events, not just a declaration of a delegate. You are missing the 'event' keyword.

public **event** MyDelegate MyEvent;

Once you have that keyword the += will work for you.

于 2008-11-16T20:26:27.600 回答
4

您只能从声明它的类中调用该事件。在任何其他地方,您只能通过运算符添加或删除事件委托中的处理程序+=-=,因此会出现错误消息。

于 2008-11-16T18:04:49.603 回答
1

如果您尝试使用来自不同类的事件,则需要了解事件和委托之间的区别。事件只是封装了“订阅”和“取消订阅”方面,而不是“引发事件”。(事实上​​,在 IL 中,您可以拥有一个“引发事件”的成员,但 C# 不支持它。)

有关更多详细信息,请参阅我关于事件和代表的文章。

于 2008-11-16T18:51:06.607 回答
0

查看 Chris Sells .NET Delegates: AC# Bedtime Story了解代表和活动的精彩指南。内容丰富且非常有趣。

于 2008-11-16T22:25:34.757 回答
0

此外,您可能想看看这篇关于避免检查空委托的帖子

于 2008-11-16T18:11:05.050 回答