拨开云雾见青天c#委托与事件

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 += 这是个事件,至于这个事件怎么触发的咱也不用管。

posted @ 2011-03-31 15:43  郭远威  阅读(458)  评论(0编辑  收藏  举报