委托及反射
来源:互联网 发布:windows读取ext4文件 编辑:程序博客网 时间:2024/05/20 20:44
委托及事件
委托是一种类型.像类一样,可以声明委托类型变量.
匿名方法:通常只能用一次的方法,通常使用委托来实现.
委托的可以执行事件的事情,但是不安全.
委托可以直接调用
事件只能+=-=调用
事件语法:event ProcessWordDelegate
加上event关键字实现事件机制的好处:
用了event时间,不可以修改事件已经注册的值,不可以冒充事件进行事件通知.在IntUC外部就不能通过OnInt(3)的方式调用注册的委托 只能通过+=-=
定义委托这一步,系统默认是有的,不需要在做
委托和事件的区别:考试常考
委托和事件没有可比性,因为委托是数据类型,事件是对象,可以理解为对委托变量的封装
下面说的是委托的对象(用委托方式实现的时间)和(标准的event方式实现)事件的区别.事件的内部是用委托实现的.(举例子)三种实现事件的区别,直接用委托实现,用私有委托+公有方法模拟事件,直接用event事件实现
因为对于事件来讲,外部只能注册自己 +=,-=注销自己.外界不可以注销其他的注册者,外界不可以主动触发事件,因此如果用Delegate就没法进行上面的控制,因此诞生了事件的语法,add,Remove
事件是用来阉割委托实例的,事件只能add,renove自己,不能赋值,直接只能+=,-=不能=不能外部触发事件
委托的作用:
占位:在不知道将来要执行的方法的具体代码时,可以先用一个委托变量来代替方法调用
(委托的返回值,参数列表要确定)在实际调用之前,需要为这里写代码片
委托赋值,否则为null
事件的作用:事件的作用与委托变量一样,只是功能上比委托变量有更多的限制
比如1.只能通过+=或-=来半丁方法. 2只能在类内部调用触发事件
在自定义控件,会大量用到编写控件的时候,会写一些事件,但是当这些事件被触发之后,具体执行的哪些事件处理程序时
编写控件的人没法确定的,这个事件只能通过事件来占位,调用.具体调用的是哪个方法,由使用控件的人来决定
(Click+=new 委托(方法名))
反射
反射就是动态获取程序集中的元数据来操作类型的
反射无处不在,vs智能提示,通过反射获取到累的属性方法,反编译也是通过反射实现
Type类实现反射的一个重要类,通过他我们可以获取类中的所有信息,包括方法,属性
可以动态调用类的属性方法
Type是对类的描述
反射就是直接通过.dll来创建对象,调用成员
先通过一个普通类介绍Type(person)
通过类型元数据来获取对象的一些相关信息,并且还可以实例化对象调用方法
这个就叫反射
反射让创建对象的方式发生了改变
编译器的智能提示就是反射的一个应用
杂项
构造函数是可以有多个的.
程序集是.net中的概念.
.net中的dll于exe文件都是程序集(exe和dll的区别).
程序集(Assembly)可以看做是一堆相关类打一个包,相当于java中的jar包.
AssemblyInfo.cs 存储着文件信息.
关于事件的案例
这是开发控件的人写的代码
- 委托及反射
- 反射委托事件实现
- 反射,泛型,委托,泛型
- 委托,事件和反射
- C#委托及事件委托
- 委托及多播委托
- 委托和反射的实现
- .net反射(委托+事件)
- <C#> 索引器、委托、反射
- C#委托及事件
- C#委托及事件
- C#委托及事件
- C#委托及事件
- C#委托及事件
- C#委托及事件
- C#委托及事件
- C#委托及事件
- C#委托及事件
- 网站架构的一般演化过程以及一些网站性能优化的方法
- Android面试基础知识
- 下拉框联想词搜索
- Beware EditText on API 21
- for的两种循环的小细节
- 委托及反射
- 奔五的人学iOS:swift获取连接的wifi名称及ap的mac地址
- Java不借助中间变量,交换两个变量的值的方法
- Java GC系列(2):Java垃圾回收是如何工作的?
- Git中tag的用法
- 工作中遇到的java 内存溢出,问题排查
- BLOG收集
- linux下mysql中文乱解决办法
- DisplayMetrics 类解析和用法