C#中的委托是一个类型,它描述了一个方法的签名,即方法的参数类型和返回类型。委托可以看作是一个指向方法的引用,使得我们可以像使用函数指针一样调用这些方法。引用可在运行时被改变。委托只是一种特殊类型的对象,其特殊之处在于,我们以前定义的所有对象都包含数据,而委托包含的只是一个或多个方法的地址。
假设张秘书,在领导每次出差前,需要亲自完成:购买飞机票、订酒店、准备旅行包等琐碎的事务性的准备工作,繁琐并且效率低。以前在携程网上购买飞机票、订酒店。【具体代码模拟:[C#]关于委托delegate的场景假设及代码模拟-A-CSDN博客】,但在携程网遇到过几次服务质量太差的事件后,不再信任该平台。他直接在[淘宝]网上[飞猪]平台订购飞机票和酒店,继续在[淘宝]网上购买旅行用品,大大地提高了工作效率。另外提示,携程网和淘宝网,是我国著名的两个可委托的代理平台。
- using System;
-
- namespace DelegateDemo
- {
- delegate void TaoBao();
- public class Secretary
- {
- private int _count;
- private int _star;
- private string _name;
- public Secretary(int count,int star,string name)
- {
- _count = count;
- _name = name;
- _star = star;
- }
- public void BuyAirlineTicket()
- {
- Console.WriteLine("购买{0}张飞机票。", _count);
- }
- public void BookHotel()
- {
- Console.WriteLine("订{0}星级酒店。",_star);
- }
- public void BuyTripGoods()
- {
- Console.WriteLine("购买旅行用品:{0}", _name);
- }
- }
-
- class Program
- {
- static void Main(string[] args)
- {
- Secretary zhang = new Secretary(2,5,"旅行包");
- //3. 委托广播模式:
- TaoBao tb = new TaoBao(zhang.BuyAirlineTicket);
- TaoBao tb2 = new TaoBao(zhang.BookHotel);
- TaoBao tb3 = new TaoBao(zhang.BuyTripGoods);
- tb += tb2;
- tb += tb3;
- tb();
- }
- }
- }