Eight Days a Week - by The Beatles & 小陆
please input 'a':a
hello
Some event occur!
事件的应用 例如有下面的需求需要实现:程序主画面中弹出一个子窗口。此时主画面仍然可以接收用户的操作(子窗口是非模态的)。子窗口上进行某些操作,根据操作的结果要在主画面上显示不同的数据。我发现一些程序员这样实现这个功能: 主画面弹出子窗口后,将自己的指针交给子画面,然后在子画面中使用这个指针,调用主画面提供的方法,改变主画面上的数据显示。这样虽然可以达到目的,但是各个模块之间产生了很强的耦合。一般说来模块之间的调用应该是单方向的:模块A调用了模块B,模块B就不应该反向调用A,否则就破坏了程序的层次,加强了耦合程度,也使得功能的改变和追加变得很困难。 这时正确的做法应该是在子窗口的操作过程中发出各种事件,而由主窗口捕捉这些事件进行处理,各个模块专心的做自己的事情,不需要过问其他模块的事情。参考文献 sam111的blog:http://blog.csdn.net/sam1111/ C#中的delegate和event
posted on 2004-11-28 22:37 小陆 阅读(2475) 评论(11) 编辑 收藏 网摘
event的签名可以不是void(object, EventArgs). event和delegate的区别是event只能由它所在的类里触发,delegate无此限制. 回复 引用 查看
代理实现的事件链也是个不错的东东 回复 引用 查看
觉得事件和代理有点C/S的意思呢 回复 引用 查看
delegate 一般中文翻译为 委托。代理容易误导。 回复 引用 查看
是啊,叫做“代理”容易与Proxy模式混淆,这个应该叫做委托更好一些 回复 引用 查看
咬文嚼字,吹毛求疵一下 // 步骤1,声明delegate对象 public delegate void MyDelegate(string name); 是否改为“声明delegate类型”更合适呢。 回复 引用 查看
事件参数类,并不一定需要从System.EventArgs继承吧.能说说理由吗? 回复 引用
确实不是必须,搞错了。参数应该可以是任何类型。 回复 引用 查看
public event SomeHandler SomeEvent; 是说SomeEvent 是指向event,同时又指向SomeHandler的引用吗? 回复 引用
event是一个关键字, 表示声名一个事件. SomeHandler是一个delegate, 表示处理这个事件的响应方法应该具有的参数和返回值, 同时触发这个事件的时候也要提供这样的参数. 回复 引用
可不可以这样声明public delegate void MyDelegate();代理 回复 引用
昵称: [登录] [注册]
主页:
邮箱:(仅博主可见)
验证码: 看不清,换一个
评论内容:
登录 注册
[使用Ctrl+Enter键快速提交评论]
Powered by: 博客园 Copyright © 小陆