用 事件 时,必须 要委托么?
搜了委托的示例,也会提到事件,但是演示 委托功能时,可以不用事件
但是,搜索所有事件的例子,基本都会有委托
用事件时,一定要委托么 ?
再有,为什么要使用事件? 什么情况下适合使用事件?
------解决方案--------------------事件就是一种委托
------解决方案--------------------
Sender sender = new Senser();
Receiver receiver = new Receiver(sender);
sender.TriggerEvent();
------解决方案--------------------http://www.cnblogs.com/xuting/archive/2008/08/26/1276318.html
推荐
------解决方案--------------------事件本质上是委托,其实自己用的时候很少,在windows窗体程序中,编写事件的方法时自动通过委托将事件与指定的方法进行委托
------解决方案--------------------事件即委托,是用来减少依赖的。 一个类的方法如何让别人调用,可以new、可以用静态,还可以把 这个方法传递出去,跟传递一个参数一样。
------解决方案--------------------额,我这么说你可明白“事件必须是委托,委托未必是事件”
好了不需要再说啥了,中学滴哲学课,数学课都这么教滴,你应该能理解了把(充分和必要)
------解决方案--------------------至于什么情况下是什么
事件可以用委托代替,委托不一定能用事件代替
常规情况下:“必须依靠外面才能确定方法,使用委托;而不需要外面的方法,甚至是从class内部发出滴通知外面接收的东西,使用事件”
大体上是这样
1.我委托你办事,这事我办不好,必须委托你来办--这是委托
2.我已经办好,需要通知你来接收(当然你接不接收,可以有,可以没有,反正我已经办好)--这是事件
------解决方案--------------------收集的代码 事件和委托
委托会在后面赋值的时候被覆盖,事件赋值一个执行一个,一下收集的测试代码
----------------系统委托EventHandler
----------------------------事件(封装)
public event SearchHandler search;
public event SearchHandler Search {
add {
search += value;
}
remove {
search -= value;
}
}
--------------------------------------------------------------------简单的委托例子
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace T2
{
//委托必须是参数类型和返回类型相同,并且用deletegate修饰
class Computer
{
public int Add(int x, int z) {
return x + z;
}
public int Sub(int x, int z)
{
&nb