C#基础02-Net框架
零、文章目录
C#基础02-Net框架
1、版本说明
(1)起源与诞生
- 前身COOL项目
- 1998年微软启动COOL(C-like Object Oriented Language)项目,由Delphi之父Anders Hejlsberg主导设计,目标是为.NET平台打造纯面向对象语言 。
- 2000年2月因商标问题更名为C#(名称灵感源于音乐符号升C大调)。
- 正式发布(2002)
- C# 1.0随 .NET Framework 1.0发布,定位为Java的替代方案,核心特性包括:
- 基础面向对象(类、继承、接口)
- 自动内存管理(GC垃圾回收)
- 跨语言互操作性(通过CLR)
- C# 1.0随 .NET Framework 1.0发布,定位为Java的替代方案,核心特性包括:
(2)版本历史
.NET / .NET Framework 版本 | 发布年份 | C# 版本 | Visual Studio 版本 | .NET 主要新功能 | C# 主要新功能 |
---|---|---|---|---|---|
.NET Framework 1.0 | 2002 | C# 1.0 | VS 2002 | - 首个版本,引入了CLR - 支持Windows应用程序开发 | - 基础语言特性 - 类和对象 - 异常处理 - 委托和事件 |
.NET Framework 1.1 | 2003 | C# 1.2 | VS 2003 | - 改进了ASP.NET性能 - 增强了Web服务的支持 | - 泛型预览 - 改进的属性支持 |
.NET Framework 2.0 | 2005 | C# 2.0 | VS 2005 | - 引入了泛型 - 改进了安全性模型 | - 泛型 - 匿名方法 - 迭代器 - 部分类 - 可空类型 |
.NET Framework 3.0 | 2006 | C# 2.0 | VS 2005 | - 添加了WPF, WCF, WF, CardSpace | - (无新功能) |
.NET Framework 3.5 | 2007 | C# 3.0 | VS 2008 | - 引入了LINQ - ADO.NET Entity Framework | - LINQ - Lambda 表达式 - 扩展方法 - 对象和集合初始化器 - 匿名类型 - 查询表达式 |
.NET Framework 4.0 | 2010 | C# 4.0 | VS 2010 | - 并行计算库 (PLINQ) - 动态语言运行时 (DLR) - Code Contracts | - 动态绑定 (dynamic) - 命名参数和可选参数 - 协变和逆变 - Task 并发模型 |
.NET Framework 4.5 | 2012 | C# 5.0 | VS 2012 | - 异步编程模型 (async/await) - Windows Store 应用程序支持 | - 异步编程 (async/await) - Caller Info 属性 - using 静态类 |
.NET Framework 4.6 | 2015 | C# 6.0 | VS 2015 | - 性能改进 - 安全性增强 - Roslyn编译器平台 | - 空条件运算符 (?.) - 字符串插值 - 自动实现的只读属性 - 异常过滤器 - nameof 表达式 - using 静态类 |
.NET Core 1.0 | 2016 | C# 6.0 | VS 2015 / VS 2017 | - 跨平台支持 - 开源 - 快速部署 - 云优化 | - (基于C# 6.0) |
.NET Core 2.0 | 2017 | C# 7.0 | VS 2017 | - .NET Standard 2.0 - 支持WinForms/WPF预览 - Docker容器支持 | - 局部函数 - 更好的模式匹配 - 异步返回类型 (Task, ValueTask) - 元组解构 |
.NET Core 2.1 | 2018 | C# 7.1 | VS 2017 | - 长期支持版本 (LTS) - 改进gRPC支持 - 改进的Docker支持 | - 异步主方法 (async Main) - 默认表达式 - 推断元组元素名称 - 通用异步返回类型 |
.NET Core 2.2 | 2018 | C# 7.2 | VS 2017 | - 改进gRPC支持 - 改进的Azure Functions支持 | - 私有保护 - 仅初始化器 - ref struct - in参数 - readonly struct |
.NET Core 3.0 | 2019 | C# 8.0 | VS 2019 | - 支持WinForms/WPF - Blazor - 改进的性能 - 单文件发布 | - 可空引用类型 - 异步流 (IAsyncEnumerable) - 模式匹配增强 - 记录(预览) - 静态匿名函数 |
.NET 5 | 2020 | C# 9.0 | VS 2019 | - 统一 .NET Core 和 .NET Framework - 改进性能 - 改进的云原生支持 | - 记录(正式支持) - 初始化器中设置只读属性 - 顶级语句 - 模式匹配增强 - 协变和逆变接口 |
.NET 6 | 2021 | C# 10.0 | VS 2022 | - 长期支持版本 (LTS) - 改进性能 - WebAssembly支持 - 改进的容器化支持 | - 文件范围的命名空间 - 记录结构 - 带有参数的记录 - 改进的 lambda 表达式 - global using 指令 |
.NET 7 | 2022 | C# 11.0 | VS 2022 | - 改进多线程 - 改进的AI/ML支持 - 改进的云原生支持 - 改进的性能 | - 原始字符串字面量 - 静态抽象成员 - required 成员 - using 声明改进 - nameof 表达式增强 |
.NET 8 | 2023 | C# 12.0 | VS 2022 | - 改进的性能 - 改进的云原生支持 - 改进的AI/ML支持 - 改进的WebAssembly支持 | - with 表达式 - switch 表达式增强 - default 参数值 - ref struct 改进 - record 和 struct 的 with 语法 |
.NET 9 | 2024 | C# 13.0 | VS 2022 (17.9+) | - 进一步的性能提升 - 更好的云原生支持 - 改进的开发者体验 - 改进的机器学习集成 | -记录结构 -增强的模式匹配 -改进的错误处理 -更简洁的语法 -对函数式编程更好的支持 |
(3)主要阶段划分
- .NET Framework 1.0 - 4.6
- C# 1.0 - 6.0:这些版本奠定了 C# 作为现代面向对象编程语言的基础,引入了许多重要的特性,如泛型、LINQ、异步编程等。
- Visual Studio 2002 - 2015:随着 C# 和 .NET Framework 的发展,Visual Studio 也不断更新,提供了更好的开发工具和调试支持。
- .NET Core 1.0 - 3.0
- C# 6.0 - 8.0:.NET Core 的推出标志着微软向跨平台开发的重大转变,C# 也在这段时间内引入了许多现代化的功能,如模式匹配、异步流和记录。
- Visual Studio 2015 - 2019:Visual Studio 逐步增加了对 .NET Core 的支持,提供了更好的跨平台开发体验。
- .NET 5+
- C# 9.0 - 12.0:.NET 5 是微软统一 .NET Core 和 .NET Framework 的里程碑,C# 在这之后继续快速发展,引入了许多创新的功能,如顶级语句、
with
表达式和静态抽象成员。 - Visual Studio 2019 - 2022:Visual Studio 2019 和 2022 提供了强大的工具链,支持 .NET 5+ 的所有新特性,并优化了开发效率。
- C# 9.0 - 12.0:.NET 5 是微软统一 .NET Core 和 .NET Framework 的里程碑,C# 在这之后继续快速发展,引入了许多创新的功能,如顶级语句、
(4)版本对比
组件 | .NET Framework(旧版) | .NET 5+(现代跨平台) |
---|---|---|
运行时 | Windows专属CLR | 跨平台CoreCLR/CoreRT |
部署模式 | 需系统级安装 | 支持独立发布 |
云原生支持 | 较弱 | 容器优化、微服务集成 |
2、框架核心组成
(1)核心运行时与类型系统
- 公共语言运行时(CLR)
- 功能:作为执行引擎,提供内存管理(GC垃圾回收)、线程调度、安全验证、异常处理等核心服务。
- 关键机制:
- 即时编译(JIT):将中间语言(IL)动态编译为本地机器码执行。
- 通用类型系统(CTS):统一不同语言(如C#、VB.NET)的数据类型定义,确保跨语言互操作。
- 公共语言规范(CLS):定义语言互操作的最低标准,约束各语言实现。
- 框架类库(FCL)
- 定位:提供超过10,000个可重用类、接口和值类型,覆盖开发全场景。
- 核心命名空间示例:
命名空间 | 功能描述 |
---|---|
System | 基础数据类型、数学计算、异常处理 |
System.IO | 文件与流操作(如读写文本/二进制数据) |
System.Data | 数据库访问(ADO.NET) |
System.Net | 网络通信(HTTP、TCP/IP协议) |
System.Windows.Forms | Windows桌面GUI开发 |
System.Web | ASP.NET Web应用开发 |
(2)应用模型与开发支持
- 应用程序模板
- WinForms:构建传统Windows桌面应用程序。
- ASP.NET:开发Web窗体(Web Forms)和Web服务(Web Services)。
- WPF(.NET 3.0+):高级图形界面与多媒体支持。
- 通信与工作流扩展
- WCF(Windows Communication Foundation):分布式服务通信框架。
- WF(Workflow Foundation):工作流引擎支持业务流程编排。
- 语言与编译器支持
- 支持C#、VB.NET、F#等语言,通过编译器将源代码转换为IL。
(3)部署与兼容性工具
- ClickOnce部署:实现一键安装与自动更新。
- 版本兼容机制:
- 通过
<TargetFramework>
指定运行时版本(如net4.8
)。 - 支持托管与非托管代码混合运行(如COM组件互操作)。
- 通过
(4)现代演进跨平台
- .NET Core继承:
- 保留CLR与FCL核心,重构为跨平台运行时(CoreCLR)和类库(CoreFX)。
- CoreCLR:支持Windows/Linux/macOS的JIT运行时。
- 新增CoreRT运行时:支持AOT编译生成独立可执行文件。
- 统一标准:
- .NET Standard Library:定义跨平台API规范,确保代码复用。
- 不同运行时(.NET Framework/.NET Core)通过实现该标准兼容。
- 跨平台部署方案
- 依赖框架:需目标系统安装.NET运行时
- 独立发布:包含运行时与程序集(AOT编译生成单文件)