C#中委托的简单使用

委托在C#中是很重要的一部分,那么什么时候需要用到呢?或者说我们要怎么去理解这个概念呢?

     C#委托可以看做是方法引用,或者叫方法指针,它和c++中使用的函数指针最大的区别就是委托是类型安全的。

    委托声明时必须将方法的返回值和详细的参数列表列出来,这样在为委托指定方法时,可以进行类型安全的检查。

    委托声明的方式如下:

View Code
1 public delegate int AddNum(int value);

    由此可见,委托的关键字是delegate,除去这个关键字,其余部分就是一个完整的方法签名的格式,包括了委托返回类型、委托名称和委托所需的详细参数列表。
  委托有几种常见的指定方式

  1. 通过实例化委托对象的方式来指定方法

 

View Code
1 public delegate int AddNum(int value);
2
3 public int Add(int value)
4 {
5 System.Console.WriteLine(value);
6 return value + 1;
7 }
8
9 //通过实例化的方式来为委托指定方法
10   AddNum addNum= new AddNum(Add);

2.通过直接指定的方法来委托指定方法

View Code
1 public delegate int AddNum(int value);
2
3 public int Add(int value)
4 {
5 System.Console.WriteLine(value);
6 return value + 1;
7 }
8
9 //通过实例化的方式来为委托指定方法
10   AddNum addHandler =Add;

3.通过匿名的方法来委托指定的方法

View Code
1 public delegate int AddNum(int value);
2 //通过匿名方法的方式为委托指定方法
3 AddNum addNum = delegate(int value) { return value + 1; };

当然,一个委托也可以指定多个方法,当委托指定了多个方法时,那么被它指定的方法会被依次调用

View Code
1 public delegate int AddNum(int value);
2 public int Add(int value)
3 {
4 value += 1;
5 System.Console.WriteLine(value);
6 return value;
7 }
8
9 public int Add2(int value)
10 {
11 value += 2;
12 System.Console.WriteLine(value);
13 return value;
14 }
15
16 public void Test()
17 {
18 //为委托addHandler指定Add方法
19 AddNum addNum = Add;
20 //将Add2方法添加到委托中
21 addNum += Add2;
22 addNum(2);
23 }

由此可见,   我们可以通过+=操作来为委托添加方法,通过-=操作来为委托去除方法。


委托可以把一个方法作为参数代入另一个方法。委托可以理解为指向一个函数的引用。

posted @ 2011-07-04 10:14  笨笨的菜鸟  阅读(496)  评论(0编辑  收藏  举报