c# event和delegate的应用?
研究了好久,没弄明白呀~
--------------------------------------------------
我试着仿照写了一些例子,但是还是没弄明白事件的作用
public delegate void dgEventHandler(object sender,EventArgs e);
class Class2
{
static public event dgEventHandler Et;
static public void OnEt(object sender, EventArgs e)
{
Console.WriteLine( "OnEvent ");
}
static void M(object sender,EventArgs e)
{
Console.WriteLine( "Method ");
}
static void Main()
{
dgEventHandler dg = new dgEventHandler(M);
Et += dg;
Et(null,null);
}
}
---------------------
各位能不能具了简单的例子,说明事件的应用?
有什么事情是事件能做到而调用方法做不到的呢?
------解决方案--------------------可以这么理解
但是发事件的地方可以不用知道是谁在接收
也就是说他发了事件就什么都不管了
------解决方案--------------------如果你要在一个对象中调用另外一个对象中的公有函数怎么调用?
最直接的办法就是把对象2镶嵌到对象1中(或者在对象1的某个函数体中定义一个对象2的实例)成为一成员然后调用,这样的坏处就是对象1依赖对象2存在.增加了藕合.
另外一个办法就是在对象2中定义一个同样结构的委托,然后把委托指向对象2的公有函数,然后在对象一的函数中调用委托就是了.
___________________________________
多用来在两个模块之间通讯的一种手段,一种低偶合的手段.
------解决方案--------------------如果要传递方法,就必须把方法的细节包装在一个新类型的对象中,这就是委托.
事件只是委托的一种特殊形式.]
教科书上标准的定义,不知道对大家有帮助否.....
------解决方案--------------------有什么事情是事件能做到而调用方法做不到的呢?
--------------------
事件源是主动的,有事发生就广播消息,你可以订阅也可以不订阅,就好像电视台每天都有节目在播,你收就能看,不想看就不用收...
方法则是被动的,只能等待你来调用,你不调用它就不会执行,就好像我们某些衙门,你去催才有人管,不催别指望它主动给你做...
------解决方案--------------------http://intersense.spaces.live.com/?_c11_BlogPart_BlogPart=blogview&_c=BlogPart&partqs=cat%3ddotNET
刚好最近就在研究事件和代理,稍微总结了一下。
希望对你有帮助。