2008-09-17 26 views
29

說我有一個名爲青蛙類,它看起來像:如何將事件添加到一個類

public class Frog 
{ 
    public int Location { get; set; } 
    public int JumpCount { get; set; } 


    public void OnJump() 
    { 
     JumpCount++; 
    } 

} 

我需要2個東西幫助:

  1. 我想創建一個名爲事件在類定義中跳轉。
  2. 我想創建一個Frog類的實例,然後創建另一個在Frog跳轉時會被調用的方法。

回答

47
public event EventHandler Jump; 
public void OnJump() 
{ 
    EventHandler handler = Jump; 
    if (null != handler) handler(this, EventArgs.Empty); 
} 

然後

Frog frog = new Frog(); 
frog.Jump += new EventHandler(yourMethod); 

private void yourMethod(object s, EventArgs e) 
{ 
    Console.WriteLine("Frog has Jumped!"); 
} 
+1

謝謝,儘管我沒有看到需要此行「EventHandler handler = Jump;」 – 2008-09-17 16:50:32

+7

這是爲了避免死處理程序..在C#之間,你檢查一個處理程序是否爲null和調用處理程序的實際時間可能已被刪除。因此,您設置了處理程序當前指向的位置的引用,然後在該引用上檢查null並調用。 – 2008-09-17 16:53:26

0

@CQ:你爲什麼PF Jump創建一個本地副本?此外,您可以通過稍微更改事件聲明來保存後續測試:

public event EventHandler Jump = delegate { }; 

public void OnJump() 
{ 
    Jump(this, EventArgs.Empty); 
}