• c# delegate委托 和 event 时间 用法 快速体验


    之前只会使用c 或者java 来编写简单逻辑的程序,就是大家学编程语言必学的函数调用、普通运算、再加上某些算法等等。但是在实际项目中,这些肯定是不够的。经常都会在别人的代码里面看到一堆奇形怪状的代码。最近用c#用的比较多,c#里面灵活的用法很多,今天就先小试一下delegate 和 event 的用法。

    下面简单介绍一下入门,从而能够快如上手。要想深入理解,要需要自己多动手实践。

    delegate 委托类似于 C++ 中的函数指针。用法很简单。

    比如你申明一个委托:

    class Test

    {

          public delegate int DelegFunc(string s);

    }

    然后我们可以用申明的委托去定义变量,例如 DelegFunc myFunc;   myFunc具体是哪个函数,可以动态的分配:

    class Test

    {

          public delegate int DelegFunc(string s);

          public  int GetLeng(string s)

         {return s.Length;}

         publlic static void Main(string[] s)

         {

              DelegFunc myFunc = new DelegFunc(GetLeng);

              myFunc("lianjx love music");

         }

    }

    或者使用lambda 表达式来制定委托函数的内容:

    DelegFunc myFunc = str=>{return str.Length;}; 

    这样显得牛逼一点吧。

    event,即事件机制,我觉得就是委托的回调用法,这种委托可以同时关联一个以上的函数,即用 += 算符不断关联回调函数。

    先上一个简单例子:

    namespace Practice
    {
    
        delegate void WordHandler(object sender,EventArgs e);
    
        class People
        {
            public Thing life = new Thing();
    
            public People()
            {
                life.wordEvent += new WordHandler(MakePairs);
                life.wordEvent += new WordHandler(MakeForever);
            }
    
            void MakePairs(object sender,EventArgs e)
            {
                Thing s = (Thing)sender;
                Console.WriteLine("{0} love {1}",s.boy,s.girl);
            }
    
            void MakeForever(object sender, EventArgs e)
            {
                Thing s = (Thing)sender;
                Console.WriteLine("{0} and {1} last forever.",s.boy,s.girl);
            }
        }
        class Thing
        {
            public string boy;
            public string girl;
    
            public event WordHandler wordEvent;
    
            public void Comeup(string boy, string girl)
            {
                this.boy = boy;
                this.girl = girl;
    
                if (wordEvent != null)
                {
                    wordEvent(this, null);
                }
            }
        }
    }

    Thing类里面有一个委托函数 wordEvent, 它的值可以在别的类里面制定。 

    People类里面给Thing的wordEvent制定了关联的函数。

    Thing一旦有新事物到来,执行了Comeup()函数,然后Comeup()函数激发wordevent事件。Thing并不知道wordEvent执行了什么。wordEvent 自动地把消息传给了People. 这样就实现了People监听Thing的消息。

  • 相关阅读:
    3.流程控制语句
    pandas数据处理(一)pymongo数据库量大插入时去重速度慢
    windows下载安装redis
    Scrapy(一)爬知乎所有用户信息
    Mongodb去除重复的数据,pymongo去重
    selenium爬虫报错:Message: stale element reference: element is not attached to the page document 促成1分钟爬完斗鱼主播信息。
    用pyspider爬斗鱼主播信息
    曼城新闻情报站(二)Django框架的爬虫
    曼城新闻情报站(一)爬取3大网站的曼城新闻
    Beautiful Soup多线程爬取斗鱼所有主播信息(改良版)
  • 原文地址:https://www.cnblogs.com/sylvanas2012/p/delegatejunior.html
Copyright © 2020-2023  润新知