委托是寻址方法的.NET版本。在C++中,函数指针只不过是一个指向内存位置的指针,它不是类型安全的。我们无法判断这个指针实际指向什么,像参数和返回类型等项就更无从知晓了。而.NET委托完全不同,委托是类型安全的类,它定义了返回类型和参数的类型。委托类不仅包含对方法的引用,也可以包含对多个方法的引用。(注 来自C#高级编程)。
在面向对象中,一切皆对象,面向对象的三大特性:封装、继承、多态。也就是说在面向对象中,几乎没有方法能够离开类而单独存在。但有时候我们需要像C++函数指针一样方便动态调用方法,并且屏蔽C++不是类型安全的不足,这时就出现了委托。也就是说委托是基于面向对象特性的限制但允许在运行时动态、安全地在运行时调用方法的诉求中出现的。
一般情况下我们如何调用方法?
通常我们使用类的实例来调用方法或者用类名调用静态方法。但这种调用方法的不足地方就是在调用方法之前通常需要与类实例相关联。
如何在运行时动态调用某个方法?
1、使用观察者模式(具体内容可以请参考大话设计模式)。
2、使用委托