在msdn中对delegat的解释如下;
C#中的委托类似于C或C++中的函数指针。使用委托使程序员可以将方法引用封装在委托对象内。然后可以将该委托对象传递给可调用所引用方法的代码,而不必在编译时知道将调用哪个方法。与C或C++中的函数指针不同,委托是面向对象、类型安全的,并且是安全的。
1) 一个delegate对象一次可以搭载多个方法。当我们唤起一个搭载了多个方法的delegate对象,所有的方法以其“被搭载到delegate对象的顺序”被一次唤起。
2)一个delegate对象所搭载的方法并不需要属于同一个类别。一个delegate对象所搭载的所有方法必须具有相同的原型和形式。然而,这些方法可以static,也可以non-static,可以由一个或多个不同类型的成员组成。
3)一个delegate类型的声明在本质上就是创建了一个新的subtype instance,该subtype派生自.Net libraryframework的abstract base classes Delegate或MulticastDelegate,它们提供一组public methods用以访问Delegate对象或其搭载的方法。函数指针不同,委托是面向对象、类型安全并且是安全的。