在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
园子里有很多讲委托的文章,都很好。我写这篇文章的目的。一、是为了巩固基础知识。二、让更多的人理解委托、使用委托。说的都比较肤浅,希望大家多批评。 委托的定义有很多,我始终感觉概念这东西是“仁者见仁智者见智”的东西,大家看哪个好理解就理解哪个好了。常见的委托的定义有如下几种 1、MSDN:委托是一种定义方法签名的类型。 当实例化委托时,您可以将其实例与任何具有兼容签名的方法相关联。 您可以通过委托实例调用方法。 2、委托是一种可以把引用存储为函数的类型。 3、委托是一种类型安全的函数回调机制。 大家不要被概念震住。对于概念的理解都是建立在对其内容充分理解基础上的。看问题的角度不同,总结出来的概念自然也不尽相同,不过殊涂同归,都是在说委托这个语法。下面我们通过Demo来慢慢理解这个C#中令人惊叹的委托机制。 看如下代码: class Program
2: {
int y);
4:
5:
string[] args)
7: {
new CalculateDelegate(Program.Add);
int resultAdd = add(2, 2);
10:
new CalculateDelegate(Program.Minus);
int resultMinus = minus(2, 2);
13:
new CalculateDelegate(Program.Mult);
int resultMult = mult(2, 2);
16:
new CalculateDelegate(Program.Devide);
int resultDevide = devide(2, 2);
19:
20: Console.WriteLine(resultAdd);
21: Console.WriteLine(resultMinus);
22: Console.WriteLine(resultMult);
23: Console.WriteLine(resultDevide);
24: Console.ReadKey();
25: }
26:
int y)
28: {
return x + y;
30: }
int y)
32: {
return x - y;
34: }
int y)
36: {
return x * y;
38: }
int y)
40: {
return y == 0 ? 0 : x / y;
42: }
43: }
二、代码解释:程序很简单,首先定义一个用于计算的委托签名,然后在实现四个加、减、乘、除四个方法,最后在Main函数中分别创建委托实例传入方法名,并调用。现在大家是否对如何使用委托有了直观的了解。我总结一下: 1、创建委托签名,该签名除了多一个delegate关键字以外,其它部分和没有函数体的函数完全一样。 2、创建你要引用方法。例子中的Add、Minus、Mult、Devide等方法,方法签名要和委托一样。 3、实例化委托传入要执行的函数后,用委托的实例调用方法。比如 CalculateDelegate add = new CalculateDelegate(Program.Add); int resultAdd = add(2, 2); 其中Program.Add是实例化委托传入的函数,然后用委托的实例add调用方法Add。有点绕,大家们可以把add理解成一个指针,add(2,2)指向的就是Program.Add(2,2)方法。 |
请发表评论