前言:语言作为程序员的利器,应该深刻地理解并把玩它,那么就应该知道它的历史,他的诞生与演进过程,以及它的未来。要说C#,必须要提Java,C#实现.Net平台的语言。所谓.Net平台,是微软应对java竞争开发出来的一个产品。因此.Net平台是具有java类似的功能。因此必须了解java用途与功能。java的诞生伴随着小型嵌入式软件的出现,为嵌入式芯片计算能力弱,存储空间小。而C++程序过于复杂和庞大,缺少垃圾回收系统、可移植性、分布式和多线程等功能,另外由于消费电子产品所采用的嵌入式处理器芯片的种类繁杂,如何让编写的程序跨平台运行成了当时最大的难题。随着C#版本的迭代升级,C#4.0 具备了一些更为灵活的功能。
电子数《你必须知道的.Net》第二版(https://www.zhihu.com/pub/book/119957624)
C#语言历史版本特性(C# 1.0到C# 8.0汇总)_风神修罗使的博客-CSDN博客_c# 各版本
一、C#的功能迭代
C#1.0
(1)面向对象编程
(2)跨平台运行时支持
(3)不断发展的语言特性
C#2.0
(1)匿名方法
(2)可空类型
(3)部分类
(4)迭代器
(5)泛型
C#3.0
(1)匿名类型
(2)自动属性
(3)对象初始化器
(4)集合初始化器
(5)隐式类型变量和隐式类型数组
(6)扩展方法
(7)查询表达式
C#4.0
(1)动态编程
(2)并行计算
(3)后期绑定
(4)协变与逆变
C# 5.0
(1)异步方法
(2)调用方信息特性,调用时访问调用者的信息。
C# 6.0
(1)Compiler as a service
(2)支持仅导入类中的静态成员
(3)异常过滤器
(4)支持在catc/finally语句块使用await语句
(5)自动属性初始化
(6)设置制度属性的默认值
(7)支持以表达式为主题的成员方法与只读属性
(8)Null条件操作符
(9)字符串插值,产生特定格式字符串的新方法
(10)nameof操作符,返回方法、属性、变量的名称
(11)Dictionary initlizer: 字典初始化。
C# 7.0
(1)Out variables:out变量直接声明,例如可以out in parameter
(2)Pattern matching:模式匹配,根据对象类型或者其它属性实现方法派发
(3)Tuples:元组
(4)Deconstruction:元组解析
(5)Discards:没有命名的变量,只是占位,后面代码不需要使用其值
(6)Local Functions:局部函数
(7)Binary Literals:二进制字面量
(8)Digit Separators:数字分隔符
(9)Ref returns and locals:引用返回值和局部变量
(10)Generalized async return types:async中使用泛型返回类型
(11)More expression-bodied members:允许构造器、解析器、属性可以使用表达式作为body
(12)Throw expressions:Throw可以在表达式中使用
(13)Async main:在main方法用async方式
(14)Default expressions:引入新的字面值default
(15)Reference assemblies:
(16)Inferred tuple element names:
(17)Pattern-matching with generics:
C# 8.0 特征 (Visual Studio 2017 version 15.7)
- Default Interface Methods 缺省接口实现
- Nullable reference type NullableReferenceTypes 非空和可控的数据类型
- Recursive patterns 递归模式
- Async streams 异步数据流
- Caller expression attribute 调用方法表达式属性
- Target-typed new
- Generic attributes 通用属性
- Ranges
- Default in deconstruction
- Relax ordering of ref and partial modifiers