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代码>?