所以我看了很多地方,我想做的事情不起作用,虽然我似乎正在做其他地方我应该做的事情。我有以下内容:
private EventHandler statsUpdated;
public event EventHandler StatsUpdated
{
add
{
if (statsUpdated == null || !statsUpdated.GetInvocationList().Contains(value))
{
statsUpdated += value;
}
}
remove
{
statsUpdated -= value;
}
}
protected virtual void OnStatsUpdated(EventArgs e)
{
EventHandler Handler = StatsUpdated;
}
我还没有开始对OnStatsUpdated方法做任何事情,因为那里的行有错误说StatsUpdated只能在+ =或 - =的左边。但是,我从同一个班级访问它?以上是直接复制粘贴,它们现在直接放在代码中。
我做错了什么?
答案 0 :(得分:0)
我认为这是错误的错误。只需将最后一行更改为EventHandler Handler = statsUpdated;
答案 1 :(得分:0)
事实上,你并没有解雇这个事件。要解雇它,你应该使用
protected virtual void OnStatsUpdated(EventArgs e)
{
var handler = statsUpdated;
if (handler != null)
handler (this, e);
}
如果您使用的是C#6,可以将其简化为
protected virtual void OnStatsUpdated(EventArgs e)
{
statsUpdated?.Invoke(this, e);
}