c#委托与事件,理解了好多遍还是很别扭,昨日又遇此问题,痛下决心,研究一番!
委托实际上就是把你定义的一个方法当作一个委托的参数来用。如:
public delegate void doSomething(string name);这是一个委托,相当于一个类,但是这个委托有一个string类型参数name和返回类型void,强调实例化委托时,
委托的构造函数中传递的方法也应该有string类型参数和返回类型void。
如方法:
public void Hello(string name)
{
Console.WriteLine("Hello," + name + "!");
}
也有一个string类型参数和返回类型void。现在我们可以把委托和方法联系起来了如:doSomething dg=new doSomething(hello);
现在我们就能够直接调用委托来带代替具体的方法做事情了,如:dg("guoyuanwei"),输出:hello,guoyuanwei
再看一个例子来 分析事件与委托
this.button1.Click += new System.EventHandler(this.button1_Click);
private void button1_Click(object sender, EventArgs e)
{
MessageBox.Show("*万岁");
}这段代码相信大家都知道就是点击按钮弹出*万岁这几个字
以上代码中System.EventHandler在微软的手册上是这样定义的public delegate void EventHandler (Object sender,EventArgs e) 所以可以理解为就是一个委托,只不过这个委托是系统定义好的。this.button1_Click相当于委托构造函数中的参数即方法,此方法的定义中也有object sender, EventArgs e这两个参数,与委托定义的一致。
this.button1.Click += 这是个事件,至于这个事件怎么触发的咱也不用管。