委托的概念

1.委托的概念

​ 委托是一个,它定义了方法的类型,使得可以将方法当作另一个方法的参数来进行传递,这种将方法动态地赋给参数的做法,可以避免在程序中大量使用If-Else(Switch)语句,同时使得程序具有更好的可扩展性。委托是一个引用类型,委托看成是用来执行方法(函数)的一个东西。

2.委托的声明和定义

1
public delegate int MyFirstDelegate (string s);

3.委托的方法

Invoke(同步)

BeginInvoke(异步)

EndInvoke(异步回调)

可以参考学习这个:委托的invoke、beginInvoke和控件的invoke、beginInvoke的区别

4.代码模块

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
//代码清单2-1 以各种简单的方式使用委托
delegate void StringProcessor(string input);//声明委托类型
class Person
{
string name;
public Person(string name) { this.name = name; }
//声明兼容的实例方法
public void Say(string message)
{
Console.WriteLine("{0}说:{1}",name,message);
}
}
class BackGround
{
//声明兼容的静态方法
public static void Note(string note)
{
Console.WriteLine("({0})",note);
}
}
class Program
{
static void Main()
{
//声明人物实例
Person jon = new Person("铁子");
Person tom = new Person("杨树");
//声明委托实例,并添加对应的实例方法和静态方法
StringProcessor jonsVoice, tomsVoice, background;
jonsVoice = new StringProcessor(jon.Say);
tomsVoice = new StringProcessor(tom.Say);
background = new StringProcessor(BackGround.Note);
//调用委托实例
jonsVoice("你瞅啥?");
tomsVoice.Invoke("瞅你咋地?");
background("烧烤摊又开始洋溢着欢快的声音了");
Console.Read();
}
}