MSDN上对委托的定义:委托是一种引用方法的类型。一旦为委托分配了方法,委托将与该方法具有完全相同的行为。
C#是一种面向对象的语言,C#一切皆对象。因此潜意识的想用面向对象来解释“委托”。但发现不论怎么解释都解释不了,也就越来越糊涂了,到最后不了了之。
我们何不抛开面向对象,一步步的来看看什么是委托。首先对于委托我就看到的最多的一个概念是什么?没错是“方法”。方法:是一个带名称的、独立的、以可重用的方式放置的代码片段。方法无需应用程序其他部分的干预便能运行,如果创建的正确,则能够执行其名称指示的特定任务。可以看出 “方法”是“委托”中的一个比较重要的概念。
那接下来我们思考“方法”和委托“之间”是什么关系?
现在让我们看个使用委托的例子:public delegate int delegateMethod(int x, int y); 在这里的delegateMethod是什么?delegateMethod:是一系列方法的代表。为了更好理解这个问题,我们来看看我们非常熟悉的“类” :public class myClass{}这里的myClass是什么我想大家都很清楚:类,是从一组有共同特性的对象抽象出来的概念,它描述了对象的本质特征。
我们可以用同样的方法来思考delegateMethod,delegateMethod是什么呢:delegateMethod 是从一组有共同特性的方法抽象出来的概念,它描述了方法的本质特征。
现在我们就比较清楚了,类是一组对象的抽象,那委托不就是一组方法的抽象。
这样就总结出一句话:委托是方法的抽象,它代表了一组方法的共同特征。