CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
山寨机中的战斗机! 程序优化工程师到底对IT界有没有贡献
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  .NET技术 >  C#

关于委托

楼主csdnquestion(aaaa)2006-06-02 09:55:33 在 .NET技术 / C# 提问

大家好:  
  刚开始学习使用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

相关问题

关键词

得分解答快速导航

  • 帖主:csdnquestion
  • wkoe7810
  • xupc
  • wuyazhe
  • Ivony
  • hwmok
  • tjvictor

相关链接

  • CSDN .NET频道
  • .NET类图书
  • C#类图书
  • .NET类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo