当前位置:编程学习 > C#/ASP.NET >>

委托和事件关系

学习到委托和事件,问一个很菜的问题大家不要见笑啊:
委托和事件的关系是什么?
为什么事件中要用委托?
有人说委托是函数指针,这种说法对吗? --------------------编程问答-------------------- 事件是一种特定形式的委托,

委托并不是函数指针,委托是一个类,委托内部存储了一个函数指针的列表,
在委托被调用时,它遍历内部的函数指针列表将它们一一执行. --------------------编程问答-------------------- 委托是C#中的一种引用类型,类似于C/C++中的函数指针。与函数指针不同的是,委托是面向对象、类型安全的,而且委托可以引用静态方法和实例方法,而函数指针只能引用静态函数。委托主要用于 .NET Framework 中的事件处理程序和回调函数。

       一个委托可以看作一个特殊的类,因而它的定义可以像常规类一样放在同样的位置。与其他类一样,委托必须先定义以后,再实例化。与类不同的是,实例化的委托没有与之相应的术语(类的实例化称作对象),作为区分我们将实例化的委托称为委托实例。



在C#中,委托的最基本的一个用处就是用于事件处理。事件是对象发送的消息,以发信号通知操作的发生,通俗一点讲,事件就是程序中产生了一件需要处理的信号。

事件的定义用关键字event声明,不过声明事件之前必须存在一个多路广播委托:


比较:
事件的声明仅仅是比委托实例的声明多了个关键字event,事实上事件可以看作是一个为事件处理过程定制的多路广播委托。因此,定义了事件后,我们就可以通过向事件中操作符+=添加方法实现事件的预定或者是通过-=取消一个事件,这些都与委托实例的处理是相同的。与委托实例不同的是,操作符=对于事件是无效的

--------------------编程问答-------------------- 事件是一种特殊的委托。从根上说委托其实就是一个类,当然也就是对函数指针的运用。只不过在c#里被设计成类型安全的方法了。 --------------------编程问答-------------------- 委托是C#中的一种引用类型,类似于C/C++中的函数指针。与函数指针不同的是,委托是面向对象、类型安全的,而且委托可以引用静态方法和实例方法,而函数指针只能引用静态函数。委托主要用于   .NET   Framework   中的事件处理程序和回调函数。 

              一个委托可以看作一个特殊的类,因而它的定义可以像常规类一样放在同样的位置。与其他类一样,委托必须先定义以后,再实例化。与类不同的是,实例化的委托没有与之相应的术语(类的实例化称作对象),作为区分我们将实例化的委托称为委托实例。 


在C#中,委托的最基本的一个用处就是用于事件处理。事件是对象发送的消息,以发信号通知操作的发生,通俗一点讲,事件就是程序中产生了一件需要处理的信号。 

事件的定义用关键字event声明,不过声明事件之前必须存在一个多路广播委托: 


比较: 
事件的声明仅仅是比委托实例的声明多了个关键字event,事实上事件可以看作是一个为事件处理过程定制的多路广播委托。因此,定义了事件后,我们就可以通过向事件中操作符+=添加方法实现事件的预定或者是通过-=取消一个事件,这些都与委托实例的处理是相同的。与委托实例不同的是,操作符=对于事件是无效的 

事件是一种特殊的委托,必须与委托关联,相当于声明事件,必须声明称委托的事件 --------------------编程问答-------------------- 同意以上所有楼,委托不能算是指针,c#里有专门定义指针的语法
而事件是一种特殊的委托 --------------------编程问答-------------------- 说得好,学习 --------------------编程问答-------------------- 学习。。。。。 --------------------编程问答--------------------
引用楼主 goodzippo 的回复:
学习到委托和事件,问一个很菜的问题大家不要见笑啊:
 委托和事件的关系是什么?
 为什么事件中要用委托?
 有人说委托是函数指针,这种说法对吗?

事件就是使用委托来实现的,
或者说事件就是一种委托。
委托方便使用一处调用,很多处响应(调用)的效果,就是广播,
你说发个通知好呢还是全班每人跟他说一遍好?
c#里没有函数指针,委托从功能上和函数指针是一致的。
补充:.NET技术 ,  C#
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,