【C#版本详情回顾】C#3.0主要功能列表
2014-10-02 14:45
363 查看
隐式类型的本地变量和数组
在与本地变量一起使用时,var 关键字指示编译器根据初始化语句右侧的表达式推断变量或数组元素的类型
对象初始值设定项
支持无需显式调用构造函数即可进行对象初始化
集合初始值设定项
支持使用初始化列表而不是对 Add 或其他方法的特定调用来初始化集合
扩展方法
使用静态方法扩展现有类,这些静态方法可以通过实例方法语法进行调用
如果扩展方法与该类型中定义的方法具有相同的签名,则扩展方法永远不会被调用
扩展方法被在命名空间级别放入范围中
类库的实施者不应使用扩展方法来避免创建程序集的新版本
如果您要向库中添加重要的新功能,并且您拥有源代码,则应该遵循标准 .NET Framework 程序集版本控制准则
仅支持扩展方法,不支持扩展属性、事件和操作符
建议,有限制有规范地使用扩展方法,潜在的版本控制问题。慎用
可以为接口类型和委托类型定义扩展方法
ExtensionAttribute(编译时使用),存储在元数据中
匿名类型
允许动态创建可以添加到集合中并且可以使用 var 进行访问的未命名结构化类型
匿名类型提供了一种方便的方法,可用来将一组只读属性封装到单个对象中,而无需首先显式定义一个类型
类型名由编译器生成,并且不能在源代码级使用
这些属性的类型由编译器推断
创建公共只读属性,创建构造器,还会重写Object的Equals和GetHashCode以及ToString方法
这么说来,匿名类型的对象很像值类型对不对?尤其时在不可变这个特性上...
Lambda 表达式
支持带有可绑定到委托或表达式树的输入参数的内联表达式
LINQ查询关键字
自动实现的属性
支持使用简化的语法声明属性
分部方法定义
分部类型现在可以包含分部方法
类的一个部分包含方法的签名。可以在同一部分或另一个部分中定义可选实现
如果未提供该实现,则会在编译时移除方法以及对方法的所有调用
如果调用了未实现的方法,将不会导致编译时错误或运行时错误
分部方法使代码生成器创建的代码和开发人员创建的代码能够协同工作,而不会产生运行时开销
分部方法声明必须以上下文关键字 partial 开头,并且方法必须返回 void
分部方法可以有 ref 参数,但不能有 out 参数
分部方法为隐式 private 方法,因此不能为 virtual 方法
分部方法可以为泛型的。约束将放在定义分部方法声明上,但也可以选择重复放在实现声明上
不能将委托转换为分部方法
类或结构中定义,可以为静态分部方法,可以使用unsafe方法,attribute合并
如果没有对应实现部分,不能创建委托来引用,因为运行时方法不存在。编译错误
在与本地变量一起使用时,var 关键字指示编译器根据初始化语句右侧的表达式推断变量或数组元素的类型
对象初始值设定项
支持无需显式调用构造函数即可进行对象初始化
集合初始值设定项
支持使用初始化列表而不是对 Add 或其他方法的特定调用来初始化集合
扩展方法
使用静态方法扩展现有类,这些静态方法可以通过实例方法语法进行调用
如果扩展方法与该类型中定义的方法具有相同的签名,则扩展方法永远不会被调用
扩展方法被在命名空间级别放入范围中
类库的实施者不应使用扩展方法来避免创建程序集的新版本
如果您要向库中添加重要的新功能,并且您拥有源代码,则应该遵循标准 .NET Framework 程序集版本控制准则
仅支持扩展方法,不支持扩展属性、事件和操作符
建议,有限制有规范地使用扩展方法,潜在的版本控制问题。慎用
可以为接口类型和委托类型定义扩展方法
ExtensionAttribute(编译时使用),存储在元数据中
匿名类型
允许动态创建可以添加到集合中并且可以使用 var 进行访问的未命名结构化类型
匿名类型提供了一种方便的方法,可用来将一组只读属性封装到单个对象中,而无需首先显式定义一个类型
类型名由编译器生成,并且不能在源代码级使用
这些属性的类型由编译器推断
创建公共只读属性,创建构造器,还会重写Object的Equals和GetHashCode以及ToString方法
这么说来,匿名类型的对象很像值类型对不对?尤其时在不可变这个特性上...
Lambda 表达式
支持带有可绑定到委托或表达式树的输入参数的内联表达式
LINQ查询关键字
自动实现的属性
支持使用简化的语法声明属性
分部方法定义
分部类型现在可以包含分部方法
类的一个部分包含方法的签名。可以在同一部分或另一个部分中定义可选实现
如果未提供该实现,则会在编译时移除方法以及对方法的所有调用
如果调用了未实现的方法,将不会导致编译时错误或运行时错误
分部方法使代码生成器创建的代码和开发人员创建的代码能够协同工作,而不会产生运行时开销
分部方法声明必须以上下文关键字 partial 开头,并且方法必须返回 void
分部方法可以有 ref 参数,但不能有 out 参数
分部方法为隐式 private 方法,因此不能为 virtual 方法
分部方法可以为泛型的。约束将放在定义分部方法声明上,但也可以选择重复放在实现声明上
不能将委托转换为分部方法
类或结构中定义,可以为静态分部方法,可以使用unsafe方法,attribute合并
如果没有对应实现部分,不能创建委托来引用,因为运行时方法不存在。编译错误
相关文章推荐
- 【C#版本详情回顾】C#3.0主要功能列表
- 【C#版本详情回顾】C#4.0主要功能列表
- 【C#版本详情回顾】C#2.0主要功能列表
- 【C#版本详情回顾】C#2.0主要功能列表
- 【C#版本详情回顾】C#4.0主要功能列表
- C#关于ListView控件在列表视图中拖动视图项功能应用
- C# GetHashCode 部分冲突列表 数字字符串版本
- MTK 10A版本的功能列表 1
- MTK 10A版本的功能列表 2
- KTDictSeg 分词组件1.3版本 新增功能列表及下载位置
- C#.NET 大型通用信息化系统集成快速开发平台 4.1 版本 - 即时消息提醒功能改进
- 【C#】文章正文显示和文章列表分页,审核功能的添加
- C#2.0新增功能快速回顾
- C#.NET 大型通用信息化系统集成快速开发平台 4.1 版本 - 发送通知功能改进改进
- 想自己用C#写程序,主要功能是对其他的程序进行打包,如何实现,求高手指教!!!
- C#.NET 大型通用信息化系统集成快速开发平台 4.0 版本 - 独立子系统管理员功能实现
- 列表控制的主要功能
- C#2008与.NET 3.5 高级程序设计读书笔记(13)-- C#3.0的语言功能
- 详细,列表!SQL Server 2005 功能比較 SQL Server 不同版本比较
- MTK 10A版本的功能列表 4