C# 语言历史版本特性(C# 1.0到C# 7.1汇总更新)

原文:C# 语言历史版本特性(C# 1.0到C# 7.1汇总更新)

历史版本

C#作为微软2000年以后.NET平台开发的当家语言,发展至今具有17年的历史,语言本身具有丰富的特性,微软对其更新支持也十分支持。微软将C#提交给标准组织ECMA,C# 5.0目前是ECMA发布的最新规范,C# 6.0还是草案阶段,C# 7.1是微软当前提供的最新规范。

这里仅仅列个提纲,由于C# 5.0是具有ECMA标准规范的版本,所以选择C# 5.0作为主要版本学习,并专题学习C# 6.0,7.0版本新特性。

C#语言规范GitHub库参见:https://github.com/dotnet/csharplang

C#语言路线图及开发中的特性参见:
https://github.com/dotnet/roslyn/blob/master/docs/Language%20Feature%20Status.md

语言版本 发布时间 .NET Framework要求 Visual Studio版本
C# 1.0 2002.1 .NET Framework 1.0 Visual Studio .NET 2002
C# 1.1\1.2 2003.4 .NET Framework 1.1 Visual Studio .NET 2003
C# 2.0 2005.11 .NET Framework 2.0 Visual Studio 2005
C# 3.0 2007.11 .NET Framework 2.0\3.0\3.5 Visual Studio 2008
C# 4.0 2010.4 .NET Framework 4.0 Visual Studio 2010
C# 5.0 2012.8 .NET Framework 4.5 Visual Studio 2012\2013
C# 6.0 2015.7 .NET Framework 4.6 Visual Studio 2015
C# 7.0 2017.3 .NET Framework 4.6.2 Visual Studio 2017
C# 7.1 2017.6 .NET Framework Visual Studio 2017 v15.3预览版
C# 8.0 待发布

C# 1.0 特性

第1个版本,编程语言最基础的特性。

  • Classes:面向对象特性,支持类类型
  • Structs:结构
  • Interfaces:接口
  • Events:事件
  • Properties:属性,类的成员,提供访问字段的灵活方法
  • Delegates:委托,一种引用类型,表示对具有特定参数列表和返回类型的方法的引用
  • Expressions,Statements,Operators:表达式、语句、操作符
  • Attributes:特性,为程序代码添加元数据或声明性信息,运行时,通过反射可以访问特性信息
  • Literals:字面值(或理解为常量值),区别常量,常量是和变量相对的

C# 2特性 (VS 2005)

  • Generics:泛型
  • Partial types:分部类型,可以将类、结构、接口等类型定义拆分到多个文件中
  • Anonymous methods:匿名方法
  • Iterators:迭代器
  • Nullable types:可以为Null的类型,该类可以是其它值或者null
  • Getter/setter separate accessibility:属性访问控制
  • Method group conversions (delegates):方法组转换,可以将声明委托代表一组方法,隐式调用
  • Co- and Contra-variance for delegates and interfaces:委托、接口的协变和逆变
  • Static classes:静态类
  • Delegate inference:委托推断,允许将方法名直接赋给委托变量

C# 3特性 (VS 2008)

  • Implicitly typed local variables:
  • Object and collection initializers:对象和集合初始化器
  • Auto-Implemented properties:自动属性,自动生成属性方法,声明更简洁
  • Anonymous types:匿名类型
  • Extension methods:扩展方法
  • Query expressions:查询表达式
  • Lambda expression:Lambda表达式
  • Expression trees:表达式树,以树形数据结构表示代码,是一种新数据类型
  • Partial methods:部分方法

C# 4特性 (VS 2010)

  • Dynamic binding:动态绑定
  • Named and optional arguments:命名参数和可选参数
  • Generic co- and contravariance:泛型的协变和逆变
  • Embedded interop types (“NoPIA”):开启嵌入类型信息,增加引用COM组件程序的中立性

C# 5特性 (VS 2012)

  • Asynchronous methods:异步方法
  • Caller info attributes:调用方信息特性,调用时访问调用者的信息

C# 6特征 (VS 2015)

  • Compiler-as-a-service (Roslyn)
  • Import of static type members into namespace:支持仅导入类中的静态成员
  • Exception filters:异常过滤器
  • Await in catch/finally blocks:支持在catch/finally语句块使用await语句
  • Auto property initializers:自动属性初始化
  • Default values for getter-only properties:设置只读属性的默认值
  • Expression-bodied members:支持以表达式为主体的成员方法和只读属性
  • Null propagator (null-conditional operator, succinct null checking):Null条件操作符
  • String interpolation:字符串插值,产生特定格式字符串的新方法
  • nameof operator:nameof操作符,返回方法、属性、变量的名称
  • Dictionary initializer:字典初始化

C# 7 特征 (Visual Studio 2017)

  • Out variables:out变量直接声明,例如可以out in parameter
  • Pattern matching:模式匹配,根据对象类型或者其它属性实现方法派发
  • Tuples:元组
  • Deconstruction:元组解析
  • Discards:没有命名的变量,只是占位,后面代码不需要使用其值
  • Local Functions:局部函数
  • Binary Literals:二进制字面量
  • Digit Separators:数字分隔符
  • Ref returns and locals:引用返回值和局部变量
  • Generalized async return types:async中使用泛型返回类型
  • More expression-bodied members:允许构造器、解析器、属性可以使用表达式作为body
  • Throw expressions:Throw可以在表达式中使用

C# 7.1 特征 (Visual Studio 2017 version 15.3)

  • Async main:在main方法用async方式
  • Default expressions:引入新的字面值default
  • Reference assemblies:
  • Inferred tuple element names:
  • Pattern-matching with generics:

时间: 2024-09-01 11:17:05

C# 语言历史版本特性(C# 1.0到C# 7.1汇总更新)的相关文章

《R的极客理想—工具篇》—— 1.2 R的历史版本安装

1.2 R的历史版本安装 问题 在Linux Ubuntu上,如何安装不同版本的R? 引言 R语言已进入到了3.0的时代,但有些第三方的R包还处于2.15的状态,没有升级,如RHadoop等.我们要用这些R包的时候,就需要指定版本的R软件.对于Windows来说,这是很简单的操作,只要安装不同的(.exe)文件就行了:对于Linux系统来说,就不那么容易了,需要我们手动进行配置.不熟悉Linux系统的同学,在这里就很容易卡住.所以,本节就讲一下如何在Linux Ubuntu系统中安装R语言软件包

《PostgreSQL 9.0性能调校》一一1.1 PostgreSQL历史版本的性能

1.1 PostgreSQL历史版本的性能 2005年11月,PostgreSQL发布了其8.1版本.该版本中包含了众多内部结构的改进,其中一些期望能够提高多个活动客户端在多处理器系统下的数据库性能.其结果是在处理沉重工作负荷时,数据库能力得到成比例的提高.在如今的硬件设备上进行的基准评测,突出地显示了其对先前版本的跨越.可以在http://suckit.blog.hu/2009/09/29/postgresql_history看到György Vilmos 对8.0版至8.4版的性能横向比较.

搞懂.NET Framework 历史版本(2017年)

原文:搞懂.NET Framework 历史版本(2017年) 最近被.NET平台各种名词.以及各种版本弄得有些疑惑,开发和部署,对于开发平台版本选择是个基本问题,因此,花了些时间,学习汇总了有关.NET版本演进的历史. .NET简介 这个平台相信我们都知道,不过随着技术发展,现在的.NET平台也今非昔比. .NET平台类似Java平台,是微软于2000年推出的Windows操作系统的应用软件开发框架,发展至今形成巨大的技术栈,涉及多语言(支持C#.F#.VB.NET)多领域(Windows桌面

Eclipse SVN (Subclipse的更新日志)、版本集合(1.10.0起)、更新、安装方法!

Eclipse是一个优秀的开源IDE,目前支持C/C++.JAVA.JS.PHP等语言. Subclipse的是一个Eclipse团队提供插件提供在Eclipse IDE中的Subversion的支持.该软件是根据发布的[Eclipse 公 共协议许可-V1.0]开原许可. ----------------------------------------------------------------------------------------------------------------

Delphi历史版本介绍(二)从Delphi8到DelphiXE3

Delphi历史版本介绍(二)从Delphi8到DelphiXE3 Delphi 8       Delphi8是一个短命的版本,有点像微软的vista的感觉,没有很好的超越7,后来用被2005取代,很多人都是直接从7到D2005的,Delphi8就这样被消损在历史的烟尘中. 作为Delphi8周年的产物,好像还没有长熟就被请出了娘胎,继续袭承了VCL.CLX. 架构上做了一些调整和加强,但是很多开发者感觉稳定性远远不及D7.   Delphi 2005       这个版本还有一个面子叫做Di

Android历史版本

目录   [隐藏]  1 测试版 2 版本列表 2.1 Android 1.0 2.2 Android 1.1 2.3 Android 1.5 Cupcake 2.4 Android 1.6 Donut 2.5 Android 2.0/2.1 Eclair 2.6 Android 2.2 Froyo 2.7 Android 2.3 Gingerbread 2.8 Android 3.0 Honeycomb 2.9 Android 4.0 Ice Cream Sandwich 2.10 Andro

Linux的EXT4 文件系统的历史、特性以及最佳实践

让我们大概地从 EXT4 的历史.特性以及最佳实践这几个方面来学习它和之前的几代 EXT 文件系统有何不同. 在之前关于 Linux 文件系统的文章里,我写过一篇 Linux 文件系统介绍 和一些更高级的概念例如 一切都是文件.现在我想要更深入地了解 EXT 文件系统的特性的详细内容,但是首先让我们来回答一个问题,"什么样才算是一个文件系统 ?" 一个文件系统应该涵盖以下所有特点: 数据存储: 对于任何一个文件系统来说,一个最主要的功能就是能够被当作一个结构化的容器来存储和获取数据.

全面解析HTTP/2:历史、特性、调试、性能

写在前面 超文本传输协议(英文:HyperText Transfer Protocol,缩写:HTTP)是互联网上应用最为广泛的一种网络协议.设计 HTTP 最初的目的是为了提供一种发布和接收 HTML 页面的方法.通过 HTTP 或者 HTTPS 协议请求的资源由统一资源标识符(URI)来标识. 虽然HTTP/1.1稳定运行了十多年了,但HTTP/2来势汹汹,作为技术工程师有必要学习一下HTTP/2.今天,阿里云CDN安防技术专家金九将从历史.特性.调试.性能四个层面,来全面解析HTTP/2,

Delphi历史版本介绍(一)从Delphi1到Delphi7

Delphi历史版本介绍(一)从Delphi1到Delphi7        Pascal是一种计算机通用的高级程序设计语言.它由瑞士Niklaus Wirth教授于六十年代末设计并创立.        TurboPascal语言是编译型程序语言,它提供了一个集成环境的工作系统,集编辑.编译.运行.调试等多功能于一体.Pascal有5个主要的版本,分别是UnextendedPascal.Extended Pascal.Object-Oriented Extensions to Pascal.Bo