2008-09-17 24 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); 
}