网站数据,diy科技制作网站,什么软件可以免费发广告,工程建设范围文章目录 前言一、什么是委托#xff1f;二、委托的应用1.使用委托的具体步骤2.委托的类型#xff08;命名方法委托#xff0c;多播委托#xff0c;匿名委托#xff09;① 命名方法委托#xff1a;② 多播委托#xff1a;③ 匿名委托#xff1a; 总结 前言
最近有用到… 文章目录 前言一、什么是委托二、委托的应用1.使用委托的具体步骤2.委托的类型命名方法委托多播委托匿名委托① 命名方法委托② 多播委托③ 匿名委托 总结 前言
最近有用到委托所以重新复习了一下委托的相关知识在此记录一下。 一、什么是委托
委托是C#中的一种引用类型委托的本质是一个类定义了方法的类型是将方法作为参数传递到另一个方法的特殊类。 委托可以认为是持有一个或者多个方法的对象当委托被调用时它持有的方法也会被调用。 委托是方法的抽象它存储的就是一系列具有相同签名和返回回类型的方法的地址。 委托不是对象是一种类型。
二、委托的应用
委托的使用遵循三步走的原则即定义声明委托实例化委托调用委托。
1.使用委托的具体步骤 定义声明委托实例化委托给委托赋值调用委托 一般情况往委托中添加方法其实是往委托的方法列表中添加它是一个包含有序方法列表的对象这些方法具有相同的签名和返回类型。
方法的列表称为调用列表委托保存的方法可以来自任何类或结构。(方法的满足条件委托的返回类型、委托的签名)调用列表中的方法可以是实例方法也可以是静态方法。在调用委托的时候会执行其调用列表中的所有方法。
2.委托的类型命名方法委托多播委托匿名委托 委托可以分为 命名方法委托、多播委托、匿名委托其中命名方法委托是最常见的一种委托。
① 命名方法委托
定义语法格式 修饰符 delegate 返回值类型 委托名 ( 参数列表 );实例化委托命名方法委托在实例化委托时必须带入方法的具体名称语法如下
委托名 委托对象名 new 委托名 ( 方法名 );委托中传递的方法名既可以是静态方法的名称也可以是实例方法的名称。 需要注意的是在委托中所写的方法名必须与委托定义时的返回值类型和参数列表相同。 在实例化委托后即可调用委托语法形式如下
委托对象名 ( 参数列表 );实例1在委托中注入静态方法 实例2在委托中注入实例方法 ② 多播委托 多播委托是指在一个委托中注册多个方法在注册方法时可以在委托中使用加号运算符或者减号运算符来实现添加或撤销方法。 实例模拟点餐平台预定不同类型的商品
class Program{//定义购买商品委托public delegate void OrderDelegate();static void Main(string[] args){//实例化委托OrderDelegate buy new OrderDelegate(Order.BuyFood);//向委托中注册方法buy Order.BuyCake;buy Order.BuyFlower;//调用委托buy();Console.ReadLine();}}public class Order{//委托方法(返回值和参数必须与定义的委托类型一样)public static void BuyFood(){Console.WriteLine(购买快餐);}public static void BuyCake(){Console.WriteLine(购买蛋糕);}public static void BuyFlower(){Console.WriteLine(购买鲜花);}}结果 在委托注册方法时使用 - 操作符可以撤销委托 在使用多播委托时需要注意在委托中注册的方法参数列表必须与委托定义的参数列表相同否则不能将方法添加到委托上。
③ 匿名委托 匿名委托是指在使用匿名方法注册在委托上实际上是在委托中通过定义代码块来实现委托的作用。语法格式如下
//1. 定义委托
修饰符 delegate 返回值类型 委托名 ( 参数列表 );//2. 定义匿名委托
委托名 委托对象 delegate
{//代码块
};//3. 调用匿名委托
委托对象名 ( 参数列表 );实例使用匿名委托计算长方形的面积
class Program
{//定义委托public delegate void AreaDelegate(double length,double width);static void Main(string[] args){Console.WriteLine(请输入长方形的长);double length double.Parse(Console.ReadLine());Console.WriteLine(请输入长方形的宽);double width double.Parse(Console.ReadLine());AreaDelegate area delegate{Console.WriteLine(长方形的面积为 length * width);};area(length, width);Console.ReadLine();}
}
结果 由于匿名委托并不能很好地实现代码的重用匿名委托通常适用于实现一些仅需要使用一次委托中代码的情况并且代码比较少。 总结
以上就是我对C#中有关于委托的相关知识整理希望对大家有所进步如有不对的地方也请不要怪罪哦 参考https://blog.csdn.net/luan0125/article/details/122957212