C#3.0新特性(webcast课程笔记)

C#3.0新特性(webcast课程笔记)

C#3.0新特性隐式类型化本地变量
关键字 var
在一个隐式类型化的本地变量和声明中,本地变量类型的声明过程是由
使用的表达式初始化变量来推断的。当一个本地变量声明标示为var作为
类型并且没有var类型名称在范围内,那么这个声明被视作隐式类型化的
本地变量声明
简单的说就是不定义变量的类型,而是根据变量的赋值去判断判断变量的数据类型。
注意:
. 声明者必须包含一个构造者
. 这个构造器必须是一个表达式
. 在编译时刻构造器表达式的类型不能为null类型
. 如果本地变量包含多种构造器,那么构造器必须都具有相同的编译时类型



自动属性
允许避免手工声明一个私有成员变量以及编写get/set逻辑,取而代之的是编译器会自动为你生成一个私有变量和默认的get/set操作

 

对象初始化器和集合初始化器
. 可以与构造函数一起使用
. 允许部分赋值
. 允许给internal成员赋值
. 构造函数比对象初始化先执行的



 匿名类型
. 允许建立新的操作符被用来作为匿名对象构造器以建立匿名类型的对象
. 匿名类型是没有类类型,直接继承于object

 分部方法
. 分部方法是一些方法,它使轻量级的事件
处理成为可行
. 在定义分部方法时,值得注意的是:
1、分部方法必须声明在分部类型(partial class)中;
2、分部方法使用partial 修饰符;
3、分部方法并不是总有方法体(body,即方法的实现);
4、分部方法必须返回void;
5、分部方法可以是静态的(即使用static 修饰符);
6、分部方法可以包含参数(包括在参数中使用this、ref 和
params 修饰符,不支持out 修饰符可以使用ref 修饰符来代替它);
7、分部方法必须是私有方法(private)。

扩展方法
. 扩展方法(Extension method),可以对现有类功能进行
扩充,从而使该类型的实例具有更多的方法(功能)。
. Extension Method仅仅是看起来像是一个类型的方法,但
其实质上不是,它更像是静态类型的静态方法,事实上,
它确实拥有静态方法所具有的所有功能
. Extension Method的作用域是整个namespace可见的,并
且可以通过using namespace来导入其它命名空间中的
Extension Method


Lambdas和表达式树
C#2.0 引入了匿名函数,它允许代码块能够被写成“内联”在代理值所
期望的地方。当匿名函数提供功能性编程语言的巨大威力的同时,匿名
函数的标记也显得相当的冗长。Lambda表达式提供了更简明的功能性
标记来书写匿名函数
--Lambda表达式书写为一组参数列表,紧接着=>标记,然后跟随某个
表达式或声明块
--Lambda表达式的参数可以是显式的或者隐式的类型。在一个显式类
型参数列表中,每个参数的类型都必须显式声明。
--表达式树允许lambda表达式能够代表数据结构替代表示为执行代码


查询表达式
.查询表达式提供了,语言集成化的标记,
为了和那些关系型或者等级型查询语言,
例如:SQL和Xquery相类似的查询
.查询表达式以from语句开始并且以select或
者group语句结束


 

你可能感兴趣的:(C#3.0新特性(webcast课程笔记))