深入理解C#委托:从基础到高级应用
1. 委托的基本概念
委托可以被看作是一个包含具有相同签名和返回类型的方法有序列表的对象。这个方法列表被称为调用列表。当调用委托时,它会依次调用调用列表中的每个方法。
与C++中的函数指针类似,只有一个方法的委托与之有相似之处,但委托是面向对象且类型安全的。委托持有的方法可以来自任何类或结构体,只要这些方法与委托的返回类型和签名(包括ref和out修饰符)相匹配。调用列表中的方法可以是实例方法或静态方法。
2. 声明委托类型
委托和类一样,都是类型。在使用委托类型创建变量和对象之前,必须先声明它。委托类型的声明类似于方法声明,有返回类型和签名,用于指定委托能接受的方法形式。与方法声明不同的是,委托类型声明以delegate关键字开头,并且没有方法体。
示例代码如下:
delegate void MyDel ( int x );3. 创建委托对象
委托是引用类型,有引用和对象。创建委托对象有两种方式。第一种是使用new运算符的对象创建表达式,其操作数包括委托类型名和括号内作为调用列表第一个成员的方法名,该方法可以是实例方法或静态方法。第二种是使用快捷语法,仅包含方法说明符,这两种方法是等效的,因为方法名和兼容的委托类型之间存在隐式转换。
示例代码: