2016-08-31 56 views
-1

所以我看過很多地方,我正在努力做的不是工作,儘管我似乎正在做其他地方說我應該做的事情。我有以下幾點:不能從同一個班級開火我的活動

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只能是對+ =或左 - =。但是,我從同一個班級訪問它?以上是直接複製粘貼,他們現在直接坐在代碼中。

我在做什麼錯?

+4

你的最後一行,它不應該是:'事件處理程序處理程序= statsUpdated;'? –

回答

0

我認爲這是錯字錯誤。只需將最後一行改爲EventHandler Handler = statsUpdated;

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); 
} 
相關問題