c#的 委托 与 事件 有何区别?

来源:百度知道 编辑:UC知道 时间:2024/05/22 20:33:25
事件就是委托的一个实例吗?是否用了事件的地方都可以用委托代替?
用了事件的地方是否都可以用委托代替?

event会自动生成一个delegate变量和两个函数: add和remove,C#编译器用这两个方法支持+=和-=操作符,可以用ildasm看到。这种包装方法和property/field类似。
C#对于事件的定义是建立在委托的基础之上的,C#的编译器对于定义的事件
“event会自动生成一个delegate变量和两个函数: add和remove,C#编译器用这两个方法支持+=和-=操作符,可以用ildasm看到。这种包装方法和property/field类似。
利用event规范,最重要的能够和Win32的消息能够兼容

没有委托就没有事件....触发事件的效果就是靠委托来实现的,事件就是委托,但委托不是事件,它包含事件,但是也有更大的用处(线程..etc)

你调用的每一个事件其实都是在调用一个委托.....

事件就是事件,可以被触发的,不是事件所有的功能都能让委托去实现的..

委托是用来封装方法 -- 也就是将方法作为参数
事件是调用委托封装的方法

委托就像衣服撑 要想把 衣服[方法] 挂起来[事件] 就要用 衣服撑 来实现

第一句话,倒是可以这么理解……

在.NET应用程序开发中,不管是WEB Forms(ASP.NET)还是Windows Forms,都涉及到大量对象的事件响应及处理,比如客户在线提交一份订单、或是在Windows窗口上移动鼠标等都将有事件发生。那么在C#中,是怎样声明事件并为事件添加响应方法的呢?

在C#中,事件(Events)成员就是用来声明一个类事件的。在类中声明一个事件成员一般采用如下的语法形式:

public event 代表名 事件名。

如在Control类中声明了一个Click事件成员,其语法如下:

public event EventHandler Click;

在C#中,增加了一个新的数据类型delegate(代表)来解决事件处理问题。代表数据类型非常类似于C语言中的指针,其与指针不同的是,其是代码是安全的,可管理的。由于C#本身的