• 委托1


    使用方法名做参数的函数

    委托的定义: 

    //定义了委托,它定义了可以代表的方法的类型。有一个字符串为参数无返回值的方法
    public
    delegate void GreetingDelegate(string name)

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

    GreetPeople()方法:

    //它接受一个GreetingDelegate类型的方法做参数
    public
    void GreetPeople(string,GreetingDelegate MakeGreeting) { MakeGreetimg(name); }

    调用

    GreetPeople("Jimmy Zhang",EnglishGreeting);
    GreetPeople("张子阳",ChineseGreeting);

     另一种调用

    GreetingDelegate delegate1,delegate2;
    delegate1=EnglishGreeting;
    delegate2=ChineseGreeting;
    GreetPeople("Jimmy Zhang",delegate1);
    GreetPeople("张子阳",delegate2);

    不同于string,可以将多个方法赋给同一个委托,或者叫多个方法绑定到同一委托,当调用这个委托时,依次调用其绑定方法。

    GreetingDelegate delegate1;
    delegate=EnglishGreeting;//先给委托类型的变量赋值
    delegate1+=ChineseGreetin;//给次委托在一次赋值再绑定一个方法
    //将先后调用绑定的方法
    GreetPeople("Jimmy Zhang",delegate);
    //简化写法
    GreetingDelegate delegate1=new GreetingDelegate(EnglishGreeting);
    delegate1+=ChineseGreeting;
    GreetPeople("Jimmy Zhang",delegate);

     使用-=取消委托

    delegate1-=EnglistGreeting;

    另外,可直接通过委托调用函数:

    GreetingDelegate delegate1=new GreetingDelegate(EnglishGreeting);
    delegate("Jimmy Zhang");
  • 相关阅读:
    redis深度理解底层锁原理
    深度完整的了解MySQL锁
    今天的文章很不一般
    利用h5来进行定位当前位置
    workerman(环境+初识)
    Nginx(防止压力测试的恶意攻击)
    Java Web框架——自己动手实现一个简化版的Spring IOC框架
    设计模式——策略模式
    数据库——深入理解MySQL事务
    缓存——Redis和Memcache的对比
  • 原文地址:https://www.cnblogs.com/yzj1212/p/2639602.html
Copyright © 2020-2023  润新知