• 委托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");
  • 相关阅读:
    【2019-11-29】人品才是自己的护城河
    【一句日历】2019年11月
    【2019-11-27】没压力何来成长
    【2019-11-26】自我质疑的必要性
    day 02 ---class
    商品综合练习题
    day01 --class --home
    总结day1 ---- 基础内容学习 ,以及历史了解
    day00 预习 ------基础数据类型预习 ,int ,str ,bool ,dict ,set ,切片,等相关
    day00 -----博客作业1
  • 原文地址:https://www.cnblogs.com/yzj1212/p/2639602.html
Copyright © 2020-2023  润新知