网站导航免费论文 原创论文 论文搜索 原创论文 网学软件 学术大家 资料中心 会员中心 问题解答 原创论文 论文素材 设计下载 最新论文 下载排行 论文上传 在线投稿 联系我们
返回网学首页
网学联系
最新论文 推荐专题 热门论文 素材专题
当前位置: 网学 > 编程文档 > C# > 正文
C#中的delegate和event
来源:Http://myeducs.cn 联系QQ:点击这里给我发消息 作者: 用户投稿 来源: 网络 发布时间: 12/10/14
下载{$ArticleTitle}原创论文样式
ate对象。



5. 用+=操作符添加事件到事件队列中(-=操作符能够将事件从队列中删除)。



6. 在需要触发事件的地方用调用delegate的方式写事件触发方法。一般来说,此方法应为protected访问限制,既不能以public方式调用,但可以被子类继承。名字是OnEventName。



7. 在适当的地方调用事件触发方法触发事件。



下面是一个简单的例子:







using System;







public class EventTest



{



// 步骤1,定义delegate对象



public delegate void MyEventHandler(object sender, System.EventArgs e);



// 步骤2省略



public class MyEventCls



{



// 步骤3,定义事件处理方法,它与delegate对象具有相同的参数和返回值类// 型



public void MyEventFunc(object sender, System.EventArgs e)



{



Console.WriteLine("My event is ok!");



}



}



// 步骤4,用event关键字定义事件对象



private event MyEventHandler myevent;







private MyEventCls myecls;







public EventTest()



{



myecls = new MyEventCls();



// 步骤5,用+=操作符将事件添加到队列中



this.myevent += new MyEventHandler(myecls.MyEventFunc);



}



// 步骤6,以调用delegate的方式写事件触发函数



protected void OnMyEvent(System.EventArgs e)



{



if(myevent != null)



myevent(this, e);



}







public void RaiseEvent()



{



EventArgs e = new EventArgs();



// 步骤7,触发事件



OnMyEvent(e);



}







public static void Main()



{



EventTest et = new EventTest();



Console.Write("Please input ''a'':");



string s = Console.ReadLine();



if(s == "a")



{



et.RaiseEvent();



}



else



{



Console.WriteLine("Error");



}



}



}







输出结果如下,黑体为用户的输入:



Please input ‘a’: a



My event is ok!



小结



通过上面的讨论,我们大体上明白了delegate和event的概念,以及如何在C#中使用它们。我个人认为,delegate在C#中是一个相当重要的概念,合理运用的话,可以使一些相当复杂的问题变得很简单。有时我甚至觉得,delegate甚至能够有指针的效果,除了不能直接访问物理地址。而且事件也是完全基于delegate来实现的。由于能力有限,本文只是对delegate和event的应用作了一个浅显的讨论,并不深入,我希望本文能够起到抛砖引玉的作用。真正想要对这两个概念有更深入的了解的话,还是推荐大家看MSDN。

  • 下一篇资讯: 浅析C#中的图形编程
  • 网学推荐

    免费论文

    原创论文

    浏览:
    设为首页 | 加入收藏 | 论文首页 | 论文专题 | 设计下载 | 网学软件 | 论文模板 | 论文资源 | 程序设计 | 关于网学 | 站内搜索 | 网学留言 | 友情链接 | 资料中心
    版权所有 QQ:3710167 邮箱:3710167@qq.com 网学网 [Myeducs.cn] 您电脑的分辨率是 像素
    Copyright 2008-2015 myeducs.Cn www.myeducs.Cn All Rights Reserved
    湘ICP备09003080号