• 委托 事件 lambda表达式


    委托就是以方法为参数的类型。不懂,

    看代码

    正常情况下是这样的

    有个方法是

    public void Love(string country)

    {

      messagebox.show("I Love"+" "+country);

    }

    你要调用这个方法是不是这样的啊

    string m="中国!";

    Love(m);

    委托就是在这个例子中,Love若是为委托的话,那么m就是一个方法。

    但是这样的效果肯定不好,I Love 中国 应该为  我爱中国 

    加个判断

        if(country="中国")

        messagebox.show("我爱"+" "+country);

    如果是其他的国家的呢,,

    写个方法去判断国家名字 

    public void Country(string countryName)

    {

      if(countryName="中国")

        China(countryName);

    }

     如果是中国的话,则调用这个方法

    public void China(string country)

    {

      messagebox.show("我爱"+" "+country);

    }

    这样写很麻烦 要是把国家和语言都传递给一个方法

    public void Love(string lan,string country)

    {

      messagebox.show(lan+" "+country);

    }

    调用的时候就可以这样写了,Love("我爱","中国");但是程序员不是神,他不可能知道每个国家的语言吧

    public void ChinaLove(string country)

    {

      messagebox.show("我爱"+" "+country);

    }

    但是前提是我得判断是哪一国家的啊,,但是全球有那么多的国家,如果我把国家的名字作为参数放在 love方法里,然后根据不同的国家,执行对应的代码,那该多好啊

     有一个神奇的函数 HHH(countryName ,Method) 第一个是国家的名字,第二个是执行的方法 比如我如果选的是中国=》ChinaLove("中国"); 

    委托就是这样的啊

    delegate void Language(string Country); 加了个delegate 其他的和方法没有什么区别啊 这是定义,但是我怎用呢,是不是想到开头的m的定义是 string m="";

    所以这里的委托用的时候应该这样写

    Language delLang ;//这是先定义好,还没有赋值呢

    那段神奇的结构就是这样的了

    HHH(china,deLang)

    但是我怎么调用啊

    HHH(china,deLang)

    {

      deLang(china)

    }

    这样都行啊,,我记得字符出有拼接的难道他也有,,好像真有

    我难道可以这样

    Language Chi;

    Language Eng+=Chi;都可以

    还挺方便的,比如一个混血儿,爱两个国家 就可以

    Language Chi;

    Language f+=Chi

    HHH(china,Eng);

    但是有个国家变得很差劲,不爱了

    Eng-=f;

    我有很多地方用到这类性的,怎么办,,总不能写同一个类里面

    委托写在一个类里面 比如说叫Test类

    调用的时候得这样吧

    Test T=new Test();

    T.HHH(参数)

    要是那个国家变好了 Language f+=Chi;

    我得这样写

    HHH(“中国”,f);会有两个弹窗

    其实是不是f 相当于是传递了两次, 优化吧

    HHH(string country)

    {

    if(deLang!=null)

       deLang(country)

    }

    前提是这个委托的访问修饰符必须是public ,但是都是public很容易错啊,必须改为private ,改为私有的,调不了啊。如果能像string那样进行封装成属性,,该多好吧

    那就用事件吧,,我只知道老师教的click事件,其他的不懂,但是只知道有event,难道是用event,,

     public event Language deLang()

    但是事件 只能出现在 += 或 -= 的左边

    从上面好像是 HHH函数 听强大的,他能你传递的参数来做相应的事情,,是不是相当于监听啊,,我一直在监听你要传给我的参数,然后执行方法,

    我什么时候要用委托啊,还有事件啊,,不想用if else 的时候,,用if else 粗心的人比较容易出bug,我不太喜欢,,,

    但是这样调用太麻烦了,又懒了,那就用lambda ,这啥玩意,到msdn上看看

    delegate void Language(string Country); 

  • 相关阅读:
    从goauth2的一个bug说起
    Vagrant与skynet框架
    离开博客园了
    (转) Android开发性能优化简介
    ListFragment源码 (待分析)
    Activity来了
    Android下的屏幕适配
    恶心的content
    Android下的xml资源详解
    各个页面样子的实现与演示
  • 原文地址:https://www.cnblogs.com/http-www/p/3448714.html
Copyright © 2020-2023  润新知