委托:其实就是一种命令,A委托B,做事情的是B
上面是在现实世界里,反过来在程序世界中的.
委托实际上就是存储了方法的地址,做事情的仍然是B
.net编程规范说明声明委托是以xxxxEventHandler结尾
委托的语法格式:
public + delegate关键字+方法返回值+委托名
一个委托的例子
class HelloWorld
{
//定义一个委托
public delegate void GreetingDelegate(string name);
两个待委托的方法
public static void EnglishGreeting(string name){
Console.WriteLine ("hello,"+name);
}
public static void ChineseGreeting(string name){
Console.WriteLine ("你好,"+name);
}
定义一个有参数并且参数之一为委托的方法.只要传入为何种方法则调用哪种方法的委托public void GreetingPeople(string name,GreetingDelegate greeting){
greeting (name);
}
public static int Main (string[] args)
{
HelloWorld hw = new HelloWorld ();
hw.GreetingPeople ("黄河", HelloWorld.ChineseGreeting);
hw.GreetingPeople ("huanghe", HelloWorld.EnglishGreeting);
return 0;
}
}
事件一般会牵扯到两个角色:
1.事件发起者(Sender/Publisher):实际上就是事件的发行者.
2.事件订阅者(Receiver):对发起者发的通知感兴趣的话,就可以选择订阅该事件.
事件绝大部分都要和委托连用.
关键字delegateevent
匿名函数-->不记名函数c#2.0引进的
lambda表达式c#3.0引进的
声明一个委托带参数带返回值的委托
public delegate string myDelegate(string name);
带参数带返回值
myDelegate d4;
d4 = (string name)=> "你好" + name;
Console.WriteLine (d4 ("中国"));
"mL�t
网友评论