C# 委托

详见:C# 委托百度百科

我所理解的委托:就是当成变量用吧 ,哈哈

using System;
using System.Collections.Generic;
using System.Text;

namespace Delegate
{
    class Program
    {

        private static void EnglishGreeting(string name)
        {
            Console.WriteLine("Morning, " + name);
        }
        private static void ChineseGreeting(string name)
        {
            Console.WriteLine("早上好, " + name);
        }


        //注意此方法,它接受一个GreetingDelegate类型的方法作为参数
        private static void GreetPeople(string name, GreetingDelegate MakeGreeting)
        {
            MakeGreeting(name);
        }


        //定义委托,它定义了可以代表的方法的类型
        public delegate void GreetingDelegate(string name);
        
        static void Main(string[] args)
        {

            //把委托当做变量来用
            GreetPeople("Jimmy Zhang", EnglishGreeting);
            GreetPeople("张子阳", ChineseGreeting);
            Console.ReadKey();



            //定义两个委托,分别代表两个函数
            GreetingDelegate delegate1, delegate2;
            delegate1 = EnglishGreeting;
            delegate2 = ChineseGreeting;
            GreetPeople("Jimmy Zhang", delegate1);
            GreetPeople("张子阳", delegate2);
            Console.ReadKey();



            //定义一个委托,委托不同于string的一个特性:可以将多个方法赋给同一个委托,
            //或者叫将多个方法绑定到同一个委托,当调用这个委托的时候,将依次调用其所绑定的方法
            GreetingDelegate delegate1;
            delegate1 = EnglishGreeting; // 先给委托类型的变量赋值
            delegate1 += ChineseGreeting; // 给此委托变量再绑定一个方法
            // 将先后调用 EnglishGreeting 与 ChineseGreeting 方法
            GreetPeople("Jimmy Zhang", delegate1);
            Console.ReadKey();


            //直接通过委托变量调用函数
            GreetingDelegate delegate1;
            delegate1 = EnglishGreeting; // 先给委托类型的变量赋值
            delegate1 += ChineseGreeting; // 给此委托变量再绑定一个方法
            // 将先后调用 EnglishGreeting 与 ChineseGreeting 方法
            delegate1("Jimmy Zhang");
            Console.ReadKey();



            //初始化时,把某个函数委托给delegate1
            GreetingDelegate delegate1 = new GreetingDelegate(EnglishGreeting);
            delegate1 += ChineseGreeting; // 给此委托变量再绑定一个方法
            delegate1("Jimmy Zhang");



            //初始化时,绑定!
            GreetingDelegate delegate1 = new GreetingDelegate(EnglishGreeting);
            delegate1 += ChineseGreeting; // 给此委托变量再绑定一个方法
            // 将先后调用 EnglishGreeting 与 ChineseGreeting 方法
            GreetPeople("Jimmy Zhang", delegate1);
            Console.WriteLine();
            delegate1 -= EnglishGreeting; //取消对EnglishGreeting方法的绑定
            // 将仅调用 ChineseGreeting
            GreetPeople("张子阳", delegate1);
            Console.ReadKey();


        }
    }
}



 

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值