c#语法集之-----委托

委托

委托是一种特殊类型的对象,包含的是一个或多个方法的地址(方法的引用)。
提供一种方法的原型,实现方法的回调。
委托是类型安全的类,它定义了返回类型和参数的类型。

  1. 声明委托类型
    在这里插入图片描述
    delegate void Sum(int x); //该方法带有一个int参数,并返回void
    delegate string GetString();//该方法没有参数,返回string
    delegate int GetInt(string start);//该方法带有一个string参数,并返回int

    //其语法类似方法的定义,但没有方法体,定义的前面要加上关键字delegate,相当于定义一个新类
    //可以在委托的定义上加上常见的访问修身符:public、private、protected等
    public delegate int GetAInt();
    
  2. 有两种创建委托对象的方式(两种创建方式等价的):

        //1.使用带new运算符的对象创建
        GetAInt firstInt = new GetAInt(ToInt); //创建委托并保存引用
        Console.WriteLine("firstInt is {0}", firstInt());
    
        //2. 使用快捷语法
        GetAInt twoInt = ToInt2; //创建委托并保存引用
    
  3. 从委托中移除方法(用-=)

    GetAInt firstInt = ToInt;
    sumInt -= firstInt;
    sumInt();//调用委托
    
  4. 给委托中添加方法(用+=)

    GetAInt firstInt = ToInt; 
    sumInt += firstInt;
    sumInt();//调用委托
    
  5. 委托匿名方法的语法

    GetAInt del = delegate ()
     {                
            return 100;
     };
     Console.WriteLine("del is {0}", del());//调用委托
    

委托的实例代码:

class Program
    {
        delegate int GetAInt();//申明委托
        static void Main(string[] args)
        {
            GetAInt firstInt = ToInt; //创建委托并保存引用
            Console.WriteLine("firstInt is {0}", firstInt());
            
            GetAInt twoInt = ToInt2; //创建委托并保存引用
            Console.WriteLine("twoInt is {0}", twoInt());

            //组合调用列表
            GetAInt sumInt = firstInt + twoInt;
            
			Console.WriteLine("----------------从委托中移除方法--------------");
            sumInt -= firstInt;
            sumInt();//调用委托

            Console.WriteLine("----------------给委托中添加方法--------------");
            sumInt += firstInt;
            sumInt(); //调用委托

            Console.WriteLine("----------------委托匿名方法的语法--------------");
            GetAInt del = delegate ()
            {                
                return 100;
            };
            Console.WriteLine("del is {0}", del());//调用委托
            Console.ReadKey();
        }
        public static int ToInt()
        {
            Console.WriteLine("----------------ToInt-------------- is 1");
            return 1;
        }
        public static int ToInt2()
        {
            Console.WriteLine("----------------ToInt2------------- is 2");
            return 2;
        }
    }

运行后的结果:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值