不能从同一个班级开始我的活动

时间:2016-08-31 16:04:13

标签: c# events raise

所以我看了很多地方,我想做的事情不起作用,虽然我似乎正在做其他地方我应该做的事情。我有以下内容:

    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只能在+ =或 - =的左边。但是,我从同一个班级访问它?以上是直接复制粘贴,它们现在直接放在代码中。

我做错了什么?

2 个答案:

答案 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);
}