简介
C#是一门广泛应用于各个领域的强大语言,由Microsoft支持。C#语法灵活、环境丰富,涉猎AI应用、云原生、游戏、企业服务、桌面应用、上位机等诸多场景。核心环境.NET开源可控,社区框架诸多,服务于现代软件工程。
首次发布
2002年
典型范式
泛型 / 事件 / 声明式
代表生态
ASP.NET / Unity / Avalonia
语言气质
工程化 / 类型安全 / 持续演进
设计目标与特性
LINQ
异步编程
泛型
OOP
简洁
类型推断
模式匹配
反射
现代化
如果你写过Unity、ASP.NET或Avalonia等,你会特别熟悉“生产力+工具链”这条主线:语言特性往往围绕工程可维护性与开发体验不断优化。C#的语法非常灵活,性能也优异,并且数十年来一直不断迭代着特性。谁能想到,这样一门语言的最初目标只是为了成为一门现代、简单、通用的面向对象编程语言呢?
语法示例
using System;
public class Demo
{
public static void Main()
{
string name = "C#";
Console.WriteLine($"Hello, {name}!");
}
}
发展时间线
2002
随着VS .NET 2002的发布,C# 1.0面世。彼时,C#还是一门富有潜力的语言,相较于如今的C#,它尚未具备的功能不计其数。但它当时已经具备了面向对象的基本概念。
2003
VS .NET 2003带来了C# 1.2。这个次要版本值得注意的一点是:异步编程模式。
2005
C# 2.0引入了泛型,这使得C#程序可以更加灵活地对不同类型进行操作。除此之外,匿名函数、迭代器等能力也成为了现代C#的基石。
2007
C# 3.0推出,这个版本依旧令人惊喜不断。例如,自动实现的属性,当一个属性只需要读写而没有其它操作时,源代码不再需要显式定义字段;LINQ则将一套贴近于SQL的查询表达式引入了程序逻辑中;箭头函数、var类型推断等特性也是在这个版本引入的。
2010
转眼间到了2010年,C# 4.0推出,这个版本最知名的功能是命名参数和可选参数,也就是说,从这个版本开始,调用函数不再必须按顺序传值。
2012
虽然引入的特性极少,但是这一年推出的C# 5.0引入了——强大而便利的async、await异步模型。
2015
C# 6.0带来了一些改进,例如,表达式体成员(即成员定义用箭头指向表达式的写法)、可选链运算符等。事实上,字符串内插也是直到这个版本才引入的特性,尽管如今的入门教程都会广泛使用它。
2017
C# 7.0也不同凡响,这里有一些知名的特性,例如,out变量、元组、模式匹配、ref变量别名等。同一时期,.NET Core 1.0发布,这可以视作现代.NET的前身,它标志着C#在官方支持下成为了跨平台的语言。C# 7.1和C# 7.2也是在这一年更新的,有一个不知名但实用的特性:private protected修饰符。
2018
几乎是紧随着C# 7.0的步伐,C# 7.3很快推出。这个版本主要围绕现有功能的改进。此外,截至这一年的年底,.NET Core 2.2发布。
2019
C# 8.0是首个专门面向.NET Core的版本。这个版本引入了using声明、readonly修饰符、范围运算符等实用的特性,并且为模式匹配迭代了更多的方式。
2020
C# 9.0引入最知名的特性是目标类型的new表达式,也就是构造函数可以省略类名的写法。除此之外是不太实用,但或许为C#作为脚本提供了基础的顶级语句。箭头函数内的弃元也是在这个版本得到支持的。同时,.NET 5.0推出,代表.NET正式进入跨平台时代。
2021+
由于本人主要使用C#进行Unity开发,而Unity目前对C#的支持停滞于C# 9.0。因此本人对后续版本的特性相对陌生,暂时留白。
生态与代表应用
常见使用场景
- 企业应用与后端服务
- 桌面客户端
- 游戏开发
- 工具链与自动化脚本
代表平台
- CLR / .NET Runtime
- NuGet生态
- ASP.NET Core
- Unity
- Roslyn编译器