Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/287.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 我不能从同一个班级发起我的活动_C#_Events_Raise - Fatal编程技术网

C# 我不能从同一个班级发起我的活动

C# 我不能从同一个班级发起我的活动,c#,events,raise,C#,Events,Raise,所以我看了很多地方,虽然我似乎在做其他地方说我应该做的事情,但我试图做的却没有起作用。我有以下资料: private EventHandler statsUpdated; public event EventHandler StatsUpdated { add { if (statsUpdated == null || !statsUpdated.GetInvocationList().Contains(value)

所以我看了很多地方,虽然我似乎在做其他地方说我应该做的事情,但我试图做的却没有起作用。我有以下资料:

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


我做错了什么?

我认为是打字错误。只需将最后一行更改为
EventHandler=statupdated

事实上,您没有触发事件。要启动它,你应该使用

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

您的最后一行不应该是:
EventHandler=statupdated