委托的概念
委托从字面上理解就是一种代理,类似于房屋中介,由租房人委托中介为其租赁房屋。 在 C# 语言委托则委托某个方
法来实现具体的功能。
委托的特点:
1、委托是一种引用类型,虽然在定义委托时与方法有些相似,但不能将其称为方法。
2、从数据结构来讲,委托是和类一样是一种用户自定义类型。
3、委托是方法的抽象,它存储的就是一系列具有相同签名和返回回类型的方法的地址。
4、调用委托的时候,委托包含的所有方法将被执行。
方法委托是最常用的一种委托,其定义的语法形式如下:
1 修饰符 delegate 返回值类型 委托名 ( 参数列表 );
//委托第一步定义 第二步绑定对象方法 3调用
public delegate void TestDelegate();
实例化委托
在定义好委托后就到了实例化委托的步骤,命名方法委托在实例化委托时必须带入方法的具
体名称。
实例化委托的语法形式如下:
1 委托名 委托对象名 = new 委托名 ( 方法名 );
TestDelegate testDel = new TestDelegate(stu.PrintStudentInfo);
委托中传递的方法名既可以是静态方法的名称,也可以是实例方法的名称。
需要注意的是,在委托中所写的方法名必须与委托定义时的返回值类型和参数列表相同。
调用委托
在实例化委托后即可调用委托,语法形式如下:
1 委托对象名 ( 参数列表 );
testDel();
在这里,参数列表中传递的参数与委托定义的参数列表相同即可。
多播委托:
在 C# 语言中多播委托是指在一个委托中注册多个方法,在注册方法时可以在委托中使用加
号运算符或者减号运算符来实现添加或撤销方法。
那么当委托执行的时候,所有委托的方法都会被执行。
TestDelegate testDel = new TestDelegate(stu.PrintStudentInfo);
testDel += stu1.PrintStudentInfo;
testDel += stu2.PrintStudentInfo;
//匿名委托
testDel += delegate ()
{
Console.WriteLine("我是一个匿名委托");
};
testDel();
匿名委托:
在 C# 语言中匿名委托是指使用匿名方法注册在委托上,实际上是在委托中通过定义代码块
来实现委托的作用。
具体的语法形式如下:
//1. 定义委托
修饰符 delegate 返回值类型 委托名 ( 参数列表 );
//2. 定义匿名委托 5 委托名 委托对象 = delegate {代码块 };
// 调用匿名委托委托对象名 ( 参数列表 );
//匿名委托
testDel += delegate ()
{
Console.WriteLine("我是一个匿名委托");
};
//使用匿名委托完成排序
stuList.Sort(delegate(Student s1,Student s2){
return s2.age ‐ s1.age;
});