委托 匿名类 var隐式类型 匿名方法
委托
委托是一个类 它定义了方法的类型 实现了讲一个方法当做另一个方法的参数来传递
(委托的一个有趣且有用的属性是,他不知道也不关心所引用的方法的类 只关心引用的方法是否具有与委托相同的参数和返回类型)
多播委托
每个委托都只包含一个方法调用 调用委托的次数和调用方法的次数相同。如果需要调用委托的一次可以执行多个方法 这时我们就需要多播委托
通俗来讲 多播委托就是一个包含多个方法的委托称为多播委托
事件
基本上说是一个用户操作 如按键 点击 鼠标移动等等 或者是一些出现 如系统生成的通知 应用程序需要在事件发生时响应事件
事件在类中声明且生成 且通过使用同一个类或者其他类中的委托与事件处理程序联 包含的事件的类用于发布事件 这被称为发布器类 其他接受该事件的类被称为订阅器类
发布器是一个包含事件和委托定义的对象。事件和委托之间的联系也定义在这个对象中。发布器类的对象调用这个事件,并且通知其他对象
订阅器是一个接受事件并且提供事件处理程序的对象 在发布器类中的委托调用订阅器类中的方法(事件处理程序)
匿名类
定义:没有名字的类
特点:匿名类不能被引用 只能在创建时用new语句来声明
优势
匿名类提供了一种方便的方法 可用来将一组只读属性封装到单个对象中 而无需首先显示定义一个类型
类型名由编译器生成 并且不能再源代码级使用 每个属性的类型由编译器判断
可通过使用new运算符和对象初始值创建匿名类型
匿名类型通常用在查询表达式的select子句中 一遍返回原序列中的每个对象的属性子集
var隐式类型
隐式类型var 声明变量 是无须指定数据类型 编译器会根据赋值判断其数据类型的一种机制
优势:
通过var这个隐式类型 可以提高开发人员的开发效率 很多时候可以不考虑对象的类型 编译器会自动帮助我们判断
使用规则:
1.var类型会被编译器根据初始值的类型推断出具体的类型
2.var类型的局部变量必须赋予初始值
3.无法将null赋值给隐式类型的额局部变量
4.var类型变量的定义必须是在方法中或者在属性get set访问器中
5.var不能用作方法的参数
6.不能当做返回值类型
7.语句中值声明一次变量 声明后不能改变类型
匿名方法
C#2.0引入的一个新特性 它允许开发者内联inline声明自己的函数代码而无须使用委托函数
应用场景
1.需要一个临时方法, 该方法使用次数极少
2.这个方法的代码很短, 甚至可能比方法声明都短的情况下使用