当前位置: 首页 > article >正文

C#语言发展历史

前言

        C#是微软公司在2000年6月发布的一种新的编程语言,主要由安德斯·海尔斯伯格(Anders Hejlsberg)主持开发,它是第一个面向组件的编程语言,其源码会编译成msil再运行。

        C#最初有个更酷的名字,叫做COOL。微软从1998年12月开始了COOL项目,直到2000年2月,COOL被正式更名为C#。

        在1998年,Delphi语言的设计者安德斯·海尔斯伯格带领着Microsoft公司的开发团队,开始了第一个版本C#语言的设计。在2000年9月,国际信息和通信系统标准化组织为C#语言定义了一个Microsoft公司建议的标准。最终C#语言在2001年得以正式发布。

1.C# 1.0

        发布于2002年1月

        和 Visual Studio .NET 2002 一起发布的 C# 版本 1.0 非常像 Java。其目标是成为一种“简单、现代、通用的面向对象的语言”。当时,看起来像 Java 意味着它实现了早期的设计目标。

        不过如果现在回顾 C# 1.0,你会觉得有点晕。 它没有习以为常的内置异步功能和以泛型为中心的巧妙功能。 其实它完全不具备泛型。LINQ尚不可用。 这些新增内容需 要几年才能推出。

        与现在的 C# 相比,C# 1.0 版少了很多功能。 你会发现自己的代码很冗长。 不过凡事总要有个开始。 在 Windows 平台上,C# 1.0 版是 Java 的一个可行的替代之选。

2.C# 1.2

        发布于2003年4月

        随 Visual Studio .NET 2003 一起提供的 C# 版本 1.2。 它对语言做了一些小改进。 最值得注意的是,从此版本开始,当 IEnumerator 实现 IDisposable 时,foreach 循环中生成的代码会在 IEnumerator上调用 Dispose。

3.C# 2.0

        发布于2005年11月

        C# 2.0 新增了泛型、分部类型、匿名方法、可为null的值类型、迭代器、协变和逆变、getter/setter 单独可访问性、方法组转换(委托)、静态类、委托推断等。

        虽然 C# 一开始是通用的面向对象 (OO) 语言,但 C# 2.0 版很快改变了这一点。 通过泛型,类型和方法可以操作任意类型,同时保持类型安全性。

        C# 2.0 版引入了迭代器。 简单来说,迭代器允许使用 foreach 循环来检查 List (或其他可枚举类型)中的所有项。 拥有迭代器是该语言最重要的一部分,显著提升了语言的可读性以及人们推出代码的能力。

4.C# 3.0

        发布于2007年11月

        C# 3.0 版和 Visual Studio 2008 一起发布于 2007 年下半年,但完整的语言功能是在 .NETFramework 3.5 版中发布的。 此版本标示着 C# 发展过程中的重大更改。 C# 成为了真正强大的编程语言。

        此 C# 版本的杀手锏功能是查询表达式,也就是语言集成查询 (LINQ)。 LINQ 的构造可以建立在更细微的视图检查表达式树、Lambda 表达式以及匿名类型的基础上。 不过无论如何 C# 3.0 都提出了革命性的概念。 C# 3.0 开始为 C# 转变为面向对象/函数式混合语言奠定基础。

5.C# 4.0

        发布于2010年4月

        C# 4.0 版随 Visual Studio 2010 一起发布,主要功能是引入 dynamic 关键字。通过使用 dynamic 关键字,可以创建和动态类型语言(例如JavaScript)类似的构造。

6.C# 5.0

        发布于2012年8月

        C# 版本 5.0 随 Visual Studio 2012 一起发布,是该语言有针对性的一个版本。 对此版本中所做的几乎所有工作都归入另一个突破性语言概念:适用于异步编程的 async 和await 模型。

7.C# 6.0

        发布于2015年7月

        版本 6.0 随 Visual Studio 2015 一起发布,发布了很多使得 C# 编程更有效率的小功能:静态导入、异常筛选器、自动属性初始化表达式、字符串内插、nameOf运算符、索引初始化表达式、Catch/Finally 块中的 Await、仅限 getter 属性的默认值。

        发布了 Roslyn 编译器即服务。

8.C# 7.0

        发布于2017年3月

        C# 7.0 版已与 Visual Studio 2017 一起发布。 此版本继承和发展了 C# 6.0。缩减了使用 out 关键字的变量声明,并通过元组实现了多个返回值。

9.C# 7.1

        发布于2017年8月

        此版本增加了语言版本选择配置元素、三个新的语言功能和新的编译器行为。

        此版本中新增的语言功能包括:

        asyncMain 方法:应用程序的入口点可以含有 async 修饰符。

        default 文本表达式:在可以推断目标类型的情况下,可在默认值表达式中使用默认文本表达式。

        推断元组元素名称:在许多情况下,可通过元组初始化来推断元组元素的名称。

        泛型类型参数的模式匹配:可以对类型为泛型类型参数的变量使用模式匹配表达式。

最后,编译器有 -refout 和 -refonly 两个选项,可用于控制引用程序集生成。

10.C# 7.2

        发布于2017年11月

11.C# 7.3

        发布于2018年5月

12.C# 8.0

        发布于2019年9月

        C# 8.0 版是专门面向 .NET C# Core 的第一个主要 C# 版本。 一些功能依赖于新的公共语言运行时 (CLR) 功能,而其他功能则依赖于仅在 .NET Core 中添加的库类型。

13.C# 9.0

        发布于2020年11月

        C# 9 随 .NET 5 一起发布。 它是面向 .NET 5 版本的任何程序集的默认语言版本。它包含以下新功能和增强功能:记录、顶级语句、模式匹配增强:关系模式和逻辑模式等。

        C# 9 版本继续致力于让 C# 成为一种新式通用编程语言。 功能继续支持新式工作负载和应用程序类型。

14.C# 10.0

        发布于2021年11月

15.C# 11.0

        发布于2022年11月

16.C# 12.0

        发布于2023年11月

C# 12 中增加了以下功能:

  • 主构造函数: 现在可以在任何 class 和 struct 中创建主构造函数。 主构造函数不再局限于 record 类型。
  • 集合表达式: 一种用于指定集合表达式的新语法,包括展开运算符 ( .. ),可展开任何集合。
  • 内联数组: 使用内联数组,你可以创建固定大小的 struct 类型数组。
  • Lambda 表达式中的可选参数: 可以为 Lambda 表达式的参数定义默认值。
  • ref readonly 参数: ref readonly 参数可以让可能使用 ref 参数或 in 参数的 API 更清晰。
  • 创建任何类型的别名: 可以使用 using 别名指令创建任何类型的别名,而不仅仅是命名类型。
  • 试验性属性: 指示试验性功能。
  • 拦截器: 已作为预览功能发布。

        总体而言,C# 12 提供的新功能可让你更高效地编写 C# 代码。 你已经知道的语法可以在更多地方使用。 其他语法可实现相关概念的一致性。

17.C# 13.0(目前最新版)

        发布于2024年11月

        C# 13 包括以下新增功能。 可以使用最新的 Visual Studio 2022 版本或 .NET 9 预览版 SDK 尝试这些功能。

  • 新的转义序列 - \e:可以使用 \e 作为 ESCAPE 字符 Unicode U+001B 的字符文本转义序列。
  • 方法组自然类型改进:此功能对涉及方法组的重载解析进行了少量优化。
  • 对象初始值设定项中的隐式索引器访问:对象初始值设定项表达式中现在允许隐式“从末尾开始”索引运算符 ^ 。

在 C# 13 之前的版本中,不能在对象初始值设定项中使用 ^ 运算符。


http://www.kler.cn/a/381608.html

相关文章:

  • 【项目管理】根据业务流程进行函数结构设计和模块化设计
  • AppAgent 源码 (xml 解析)
  • 打造高效的 LaTeX 公式编辑器
  • SpringBoot简单使用Stomp
  • 顶顶通呼叫中心中间件mod_cti模块安全增强,预防盗打风险(mod_cti基于FreeSWITCH)
  • 怎么设置电脑密码?Windows和Mac设置密码的方法
  • Nginx配置文件编写示例
  • 【ARM Linux 系统稳定性分析入门及渐进 2.1 -- Crash 命令 Session Control 集合】
  • DNS正反向解析,区域备份
  • 计算机毕业设计Python+大模型膳食推荐系统 知识图谱 面向慢性病群体的膳食推荐系统 健康食谱推荐系统 机器学习 深度学习 Python爬虫 大数据毕业设计
  • 室内定位论文精华-20241104
  • 【深度学习】梯度累加和直接用大的batchsize有什么区别
  • c语言简单编程练习10
  • 前后端分离,Jackson,Long精度丢失
  • 命令行参数、环境变量、地址空间
  • Django遍历文件夹及文件
  • 设置HTTP会话(Session)的Cookie域
  • doris使用使用broker从HDFS导入数据
  • ArcGIS/QGIS按掩膜提取或栅格裁剪后栅格数据的值为什么变了?
  • 域名自动重定向8080端口无法访问后端服务问题
  • C++算法练习-day37——112.路径总和
  • pyspark基础准备
  • Spring Boot 配置文件启动加载顺序
  • 录屏天花板,录课新玩法,人像+一切,PPT/PDF/视频/网页,也可即可录
  • 使用Mybatis-plus出现数据库id很大或者为负数情况排查解决
  • VUE2升级成VUE3的优化与区别