C#版本与.NET版本对应关系以及各版本的特性

本文详细记录了从C#1.0到C#8.0及.NET Core 3.1的版本发展历史,包括每个版本的发布日期、对应.NET框架版本及新增特性,如泛型、Lambda表达式、异步编程等。
C#版本.NET版本发布日期特性
C# 1.0.NET Framework 1.02002-02-13委托、事件
C# 1.1.NET Framework 1.12003-04-24APM(异步编程模型)
C# 2.0.NET Framework 2.02005-11-07泛型、匿名方法、迭代器、可空类型
C# 3.0.NET Framework 3.02007-11-06隐式类型
 .NET Framework 3.52007-11-19对象集合初始化、自动实现属性、匿名类型、扩展方法、查询表达式、Lambda表达式、 表达式树、分部类和方法、Linq
C# 4.0.NET Framework 4.02010-04-12动态绑定、命名和可选参数、泛型的协变和逆变、互操作性
C# 5.0.NET Framework 4.52012-08-15异步和等待(async和await)、调用方信息(Caller Information)
C# 6.0.NET Framework 4.62015-07-20C# 6 中的新增功能
 .NET Core 1.02016-06-27 
C# 7.0.NET Framework 4.6.22016-08-02C# 7.0 中的新增功能
C# 7.1.NET Framework 4.72017-04-05 
 .NET Core 2.02016-08-14.NET Core 2.0 的新增功能
C# 7.2.NET Framework 4.7.12017-10-17 
C# 7.3.NET Framework 4.7.22018-04-30 
 .NET Core 2.12018-05-30.NET Core 2.1 的新增功能
 .NET Core 2.22018-12-04.NET Core 2.2 的新增功能
C# 8.0.NET Framework 4.82019-04-18C# 8.0 中的新增功能
 .NET Core 3.02019-09-23.NET Core 3.0 的新增功能
 .NET Core 3.12019-12-03.NET Core 3.1 的新增功能

来源:https://www.cnblogs.com/MingsonZheng/p/11273700.html

以下是关于C#版本.NET版本对应关系及查看方法的详细说明: --- ### **1. 快速查看C#版本的方法** #### **方法1:项目文件(.csproj)** ```xml <PropertyGroup> <TargetFramework>net8.0</TargetFramework> <!-- .NET 8对应C# 12 --> <LangVersion>12</LangVersion> <!-- 可手动指定C#版本 --> </PropertyGroup> ``` #### **方法2:Visual Studio** - 右键项目 → **属性** → **生成** → **高级** → 查看"语言版本" - 或通过 **解决方案资源管理器** 直接编辑`.csproj`文件 #### **方法3:命令行** ```bash # 查看已安装的.NET SDK版本 dotnet --list-sdks # 查看运行时版本 dotnet --list-runtimes ``` --- ### **2. .NET 8C#版本对应关系** | .NET版本 | 默认C#版本 | 关键语言特性 | |----------|------------|--------------| | **.NET 8** | C# 12 | 主构造函数、集合表达式、别名任意类型 | | .NET 7 | C# 11 | 泛型数学、raw string literals | | .NET 6 | C# 10 | 全局using、文件级命名空间 | --- ### **3. 如何验证当前代码使用的C#版本** #### 代码中直接检测: ```csharp // 在代码中输出当前C#版本 Console.WriteLine($"C#版本: {typeof(string).Assembly.ImageRuntimeVersion}"); // 或通过编译器指令(需手动定义) #if CSHARP12 Console.WriteLine("运行在C# 12环境"); #endif ``` #### 编译器符号表: | 版本 | 预定义符号 | |------------|------------| | C# 12 | `CSHARP12` | | C# 11 | `CSHARP11` | --- ### **4. 重要注意事项** 1. **版本覆盖规则**: - 如果未显式指定`<LangVersion>`,SDK会自动选择**最高支持的C#版本** - 可强制指定低版本(如`<LangVersion>11</LangVersion>`) 2. **兼容性**: - .NET 8项目**可以**使用C# 11(通过`LangVersion`降级) - 但C# 12特性(如集合表达式)在低版本SDK中会编译失败 --- ### **5. 推荐实践** - **新项目**:直接使用.NET 8 + C# 12 - **旧项目迁移**:逐步升级语言版本并修复兼容性问题 - **团队协作**:在`.editorconfig`中统一配置: ```ini [*.cs] dotnet_diagnostic.CS8021.severity = error # 强制使用最新语法 ``` ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值