委托、反射、事件

委托:简单的说,委托是一种方法容器,也可以理解为指向一个函数的指针,它可以把一个方法作为参数带入另一个方法

委托本质是一个密封类
事件是委托对象的封装
事件的本质:event会自动生成一个private delegate变量和两个函数: add和remove

反射:反射提供了封装程序集、模块和类型对象,它能够动态的创建类型的实例,设置现有对象的类型或者获取现有对象的类型,能调用类型的方法和访问类型的字段属性,它是在运行时创建和使用类型实例。

委托和事件没有可比性,因为委托是类型,事件是对象,事件的内部使用委托实现的。因为对于事件来讲,外部只能"注册自己+=、注销自己-=",外界不可以注销其他的注册者,外界不可以主动触发事件,因此如果用Delegate就没法进行上面的控制。因此诞生了事件这种语法。事件只能add、remove自己,不能赋值。

事件的作用与委托变量一样,只是功能上比委托变量有更多的限制。(比如:1.只能通过+=或-=来绑定方法(事件处理程序)2.只能在类内部调用(触发)事件

原文地址:https://www.cnblogs.com/xiaoweigogo/p/7799039.html