清晰了解事件

来源:互联网 发布:吃货软件有哪些 编辑:程序博客网 时间:2024/05/01 19:59
using System; 
using System.Collections.Generic; 
using System.Text; 

namespace ConsoleApplication5 

class Program 

static void Main(string[] args) 

Console.Write(
"Please input a number:"); 

//声明MainMethod类的一个实例 
MainMethod m = new MainMethod(); 

//把我们的方法挂到 m 的NumberAdded事件上 
//请注意这里使用了 MainMethod.EventDelegate 这样的方法 
//来声明这个事件委托,因为委托也是一种类。 
//在类中声明一个委托,就像声明了一个嵌套的类。 
m.NumberAdded += new MainMethod.EventDelegate(OutputResult); 

//转换用户输入,并调用Add方法相加 
m.Add(int.Parse(Console.ReadLine())); 

Console.ReadKey(
false); 
}
 

//这个是我们的事件处理函数。 
static void OutputResult(object sender, EventArgs e) 

Console.WriteLine(
"Some Number were added!"); 
}
 
}
 

public class MainMethod 

//首先声明一个委托 
//委托的实例还叫委托,但这里,我们声明的是一个委托类型 
//请注意是“类型”。 
public delegate void EventDelegate(object sender, EventArgs e); 

//然后声明一个事件 
//使用刚定义的委托类型 
public event EventDelegate NumberAdded; 

public int Result; 

public void Add(int x) 

Result 
= x + 55

//比较常用的方法,如果事件不为空,就调用。 
//其实是说委托EventDelegate是否指向一个方法 
//如果有,就不为空。 
if (NumberAdded != null

NumberAdded(
thisnew EventArgs()); 
}
 
}
 

}
 
}
 
 从这段代码可以看出,在这里事件(NumberAdded)被声明为一个类型(MainMethod)的成员,当发生了一些事(有数被相加了),对象(这个类的实例m)就调用这个委托。如果我们写好一个方法(OutputResult),然后传递给这个委托(m.NumberAdded += new MainMethod.EventDelegate(OutputResult);)那么它就会做出我们希望它做的事情(输出“Some Number were added!”消息)。
原创粉丝点击