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 }
由此可见, 我们可以通过+=操作来为委托添加方法,通过-=操作来为委托去除方法。
委托可以把一个方法作为参数代入另一个方法。委托可以理解为指向一个函数的引用。