C# 语言各个版本主要特性(从C#1.0到C#8.0)

本文概述了从C#1.0到C#8.0各版本的主要特性,包括面向对象编程的基础特性、泛型、异步编程支持、元组、模式匹配、可为空引用类型等,展示了C#语言随时间演进的发展历程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前言:本文给出一个从C#1.0到C#8.0的各个版本的主要C#特性

下面列出了在以前版本的 C# 语言和 Visual Studio.NET 中引入的主要功能。

1、C# 1.0 特性----第1个版本,编程语言最基础的特性,对应于Visual Studio .NET 2002

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

 

(1)C# 1.1 ,一个小版本的更新,对应于Visual Studio .NET 2003

  • #line 杂注和 xml 文档注释。

2、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:委托推断,允许将方法名直接赋给委托变量

3、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:部分方法
  • 本地 var 类型推理
  • 语言集成查询 (LINQ)

4、C# 4特性 (VS 2010)

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

 

5、C# 5特性 (VS 2012)

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

(1)中间有一个小的更新,Visual Studio .NET 2013:

  • 此版本的 Visual Studio 包含 .NET Compiler Platform(“Roslyn”)的 Bug 修复、性能改进和技术预览,Roslyn 是 .NET Compiler Platform SDK 的前身。

6、C# 6特征 (VS 2015,.Net Core1.0)

  • 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操作符,返回方法、属性、变量的名称
  • 只读自动属性
  • 自动属性初始化表达式
  • Expression-bodied 函数成员
  • using static
  • Null 条件运算符
  • 字符串内插
  • 异常筛选器
  • nameof 表达式
  • Catch 和 Finally 块中的 Await
  • 使用索引器初始化关联集合
  • 集合初始值设定项中的扩展 Add 方法
  • 改进了重载解析
  • Dictionary initializer:字典初始化

 

7、C# 7 特征 (Visual Studio 2017,.Net Core 1.0)

Out variables:out变量直接声明,例如可以out in parameter

 

(1)C# 7.1 特征 (Visual Studio 2017 version 15.3,.NET Core 2.0)

  • Async main:在main方法用async方式,即async main方法
  • Default expressions:引入新的字面值default
  • Reference assemblies:
  • Inferred tuple element names:推断元组元素名称
  • Pattern-matching with generics:泛型的类型参数模式匹配
  • 编译器有 -refout 和 -refonly 两个选项,可用于控制引用程序集生成

(2)C# 7.2 特征 (Visual Studio 2017 version 15.5,.NET Core 2.0)

(3)C# 7.3 特征 (Visual Studio 2017 version 15.7,.NET Core 2.1)

C# 7.3 版本有两个主要主题。 第一个主题提供使安全代码的性能与不安全代码的性能一样好的功能。 第二个主题提供对现有功能的增量改进。 此外,在此版本中添加了新的编译器选项。

以下新增功能支持使安全代码获得更好的性能的主题:

  • 无需固定即可访问固定的字段。
  • 可以重新分配 ref 本地变量。
  • 可以使用 stackalloc 数组上的初始值设定项。
  • 可以对支持模式的任何类型使用 fixed 语句。
  • 可以使用其他泛型约束。

对现有功能进行了以下增强:

  • 可以使用元组类型测试 == 和 !=
  • 可以在多个位置使用表达式变量。
  • 可以将属性附加到自动实现的属性的支持字段。
  • 由 in 区分的参数的方法解析得到了改进。
  • 重载解析的多义情况现在变得更少。

新的编译器选项为:

  • -publicsign,用于启用程序集的开放源代码软件 (OSS) 签名。
  • -pathmap用于提供源目录的映射。

 8、C#8.0 (VS 2019 , .NET Core 3.0)

持续更新中... ...

 

注意:

从C# 7.0开始,随着 .NET Core的不断成熟,我们可以自己安装一个工具,自己查看某一个版本的语言的最新特性。

  1. 安装 dotnet-try 全局工具。
  2. 克隆 dotnet/try-samples 存储库。
  3. 将当前目录设置为 try-samples 存储库的 csharp8 子目录 。
  4. 运行 dotnet try

参考地址:https://docs.microsoft.com/zh-cn/dotnet/csharp/whats-new/

 

 

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值