• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

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

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

之前只会使用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的消息。


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
C#静态类静态方法与非静态方法比较发布时间:2022-07-13
下一篇:
使用C#的HttpWebRequest模拟登陆网站发布时间:2022-07-13
热门推荐
热门话题
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap