关于委托
大家好:
刚开始学习使用C#,有个关于委托的问题:
委托有方法委托和事件委托,请问这二者除了在语法结构上不同外,他们还有哪些不同,主要是在使用场合(什么时候使用方法委托,什么时候使用事件委托)。
问题点数:30、回复次数:21Top
1 楼wkoe7810(wkoe)回复于 2006-06-02 10:51:19 得分 5
事件应该算委托的一种特殊形式
支持组播委
Top
2 楼Ivony(授人以鱼不如授人以渔,上海谋生)回复于 2006-06-02 10:55:27 得分 0
何谓方法委托?何谓事件委托?Top
3 楼wuyazhe(wyz&xyl)回复于 2006-06-02 11:02:49 得分 0
不了解,应该是一样的,但event关键字修饰的可以让编译器认识。呵呵。其他还真没看出有区别。Top
4 楼nanxi0532()回复于 2006-06-02 11:06:34 得分 0
委托不是一句话就能说明白的
建议找点资料看看
委托就是为了方便操作
建立一个委托组加上各种方法/事件
大大简化编程的代码量Top
5 楼xupc(寻巢鸟)回复于 2006-06-02 11:07:08 得分 5
对委托的定义来说这两者没有任何区别
如果你是定义一个类,委托从类外面传进来就用事件委托了
如果你在类里需要委托就用方法委托了Top
6 楼Erwin_wind(太空小石头)回复于 2006-06-02 11:42:53 得分 0
学习Top
7 楼csdnquestion(aaaa)回复于 2006-06-05 14:00:02 得分 0
如果没有区别的话,为什么要引入事件委托?事件委托明显比方法委托要麻烦。Top
8 楼xvting(xvting)回复于 2006-06-05 14:05:40 得分 0
何谓方法委托?何谓事件委托?
Top
9 楼wuyazhe(wyz&xyl)回复于 2006-06-05 14:34:50 得分 5
//用事件
public class myCls
{
public delegate void myDel();
public event myDel myEvent;
public void Test()
{
if(myDel!=null)
{
myDel();
}
}
}
//用委托
public class myCls
{
public delegate void myDel();
public myDel myEvent;
public void Test()
{
if(myDel!=null)
{
myDel();
}
}
}
调用方法应该一样的。结果应该也一样。搂住说的可能是这个意思。Top
10 楼hdt(倦怠)回复于 2006-06-05 14:46:37 得分 0
public System.EventHandler onclick;
..
void RaisEvent()
{
if( onclick != null )
onclick( this , new EventArgs() );
}Top
11 楼blueice008(无忧)回复于 2006-06-05 16:07:03 得分 0
学习Top
12 楼passionke(每一步都改变未来,却只能有一种结局!)回复于 2006-06-05 17:30:10 得分 0
学习
Top
13 楼gudyn(子剑)回复于 2006-06-15 12:53:38 得分 0
如nanxi0532() 所说.
你所说的事件委托不能在类内部调用,但方法委托可以.
个人认为委托主要用来实现类的独立性,除非必须否则不应使用方法委托!Top
14 楼heilong05()回复于 2006-06-16 09:31:18 得分 0
Mark.学习Top
15 楼Ivony(授人以鱼不如授人以渔,上海谋生)回复于 2006-06-16 10:31:02 得分 5
事件、委托类型、委托实例竟然能混为一谈,回帖的强……
事件是一种特殊的委托实例,事件甚至连类型都算不上,如你不可能定义一个事件类型的临时变量。事件实例是不用初始化的,这个由系统完成,如果你对一个空委托实例进行什么+=操作一定是未将对象引用设置到对象实例的异常。事件的声明需要一个委托类型,但这并不代表它就是一个委托实例,事实上根本就不是。事件与属性一样,是一个语法的东西,它看起来像委托,但实际上并不是。就像属性看起来像字段而实际上根本不是一样。Top
16 楼hwmok()回复于 2006-06-16 16:00:58 得分 5
其实问贴有些错误,你其实想问事件、委托、预定义事件的区别。委托就像是你找房子,房子很多(房子可以理解为不同的方法),你可以通过中介公司,你提出需求(定义委托),执行的时候才调要需要的方法(相当于中介找具体的方法)。事件是最简单的委托。预定义事件也需要用到委托,它有三个步骤:定义事件、预定事件、通知预定对象。Top
17 楼gudyn(子剑)回复于 2006-06-22 08:18:02 得分 0
无所谓贴问的对不对,也无所谓回答的描述对不对,只要能明白楼主说的意思那么楼主问的就对!只要楼主能明白回贴的意思!那么回的就对!Top
18 楼Ivony(授人以鱼不如授人以渔,上海谋生)回复于 2006-06-22 10:21:32 得分 0
无所谓贴问的对不对,也无所谓回答的描述对不对,只要能明白楼主说的意思那么楼主问的就对!只要楼主能明白回贴的意思!那么回的就对!
======================================================
请问令堂今年贵庚了?其实我是想推算一下您的年龄。Top
19 楼tjvictor(终于升星了,向两星奋斗)回复于 2006-06-22 10:50:14 得分 5
event 和 delegate 在用法上很相近,所以大家都会有疑问,为什么有了delegate还要有event呢?我也有这个疑问,不过这问过高人,他说是有区别的,只是我现在编程很粗浅,所以看不出event和delegate之间的区别,event好像应该多考虑一下系统方面的调用,否则和delegate的用法也没有什么大的分别,大家说说呢?Top
20 楼csdnquestion(aaaa)回复于 2006-06-27 16:19:25 得分 0
还是不太明白呀,难道只是一个只可意会不可言传的问题?呵呵Top
21 楼yuchang1980(鱼肠)回复于 2006-06-27 16:35:09 得分 0
我觉得event是一种特殊的委托。event是由特定条件触发的一种委托,而普通的委托调用是在程序中由代码调用的。Top




