C#简介
如果你曾经搭过积木,那你已经理解了编程的精髓——把简单的零件组合成复杂的结构。C#就是这样一套"积木":语法清晰、类型安全、功能强大,让你从第一行代码开始就能搭建出专业级的应用程序。
什么是 C#
C#(读作"C Sharp")是微软在2000年由首席设计师 Anders Hejlsberg 主持开发的一种面向对象的编程语言,于2002年正式发布。它的名字中的 # 是四个 + 号的排列,暗示它在 C/C++ 的基础上更进了一步。
C# 运行在 .NET 平台上,由 CLR(公共语言运行时)负责编译和执行,由 FCL(框架类库)提供丰富的 API 支持。简单来说:
| 组成部分 | 作用 | 类比 |
|---|---|---|
| C# 语言 | 编写代码的语法规则 | 汽车的驾驶手册 |
| CLR | 编译和运行程序 | 汽车的发动机 |
| FCL | 提供现成的功能库 | 汽车的配件仓库 |
| .NET SDK | 开发工具包 | 整个汽车工厂 |
为什么学 C#
- 市场需求大:C# 长期位居编程语言排行榜前十,在企业开发和游戏开发领域尤其强势
- 语法优雅:C# 在保持强类型安全的同时,不断引入简洁的语法糖,代码可读性高
- 跨平台:.NET 5+ 之后的版本统一了 Windows、Linux、macOS 三大平台
- 生态成熟:Visual Studio 是公认最强大的 IDE 之一,NuGet 包管理器拥有数十万第三方库
- 入门友好:强类型 + 完善的编译器提示,让初学者少犯错、快上手
- 职业路径广:从游戏开发到企业应用,从 Web 到移动端,一条语言覆盖多条赛道
C# 能做什么
| 应用领域 | 技术栈 | 说明 |
|---|---|---|
| 游戏开发 | Unity + C# | Unity 是全球最流行的游戏引擎,脚本语言为 C# |
| Web 应用 | ASP.NET Core | 高性能 Web API 和 MVC 网站 |
| 企业应用 | .NET + EF Core | ERP、CRM 等大型业务系统 |
| 移动应用 | .NET MAUI / Xamarin | 一套代码运行 Android 和 iOS |
| 桌面应用 | WPF / WinForms | Windows 原生桌面程序 |
| 云服务 | Azure + C# | 微软云生态的首选语言 |
| IoT & 嵌入式 | .NET nanoFramework | 在微控制器上运行 C# |
| 机器学习 | ML.NET | .NET 原生机器学习框架 |
C# 的特点
类型安全
C# 是强类型语言,编译器会在程序运行前检查类型匹配,避免大量运行时错误。
示例
CSHARP
int age = 25;
string name = "C#";
age = name;
编译时即报错,无法将 string 赋给 int 变量:
TEXT
error CS0029: Cannot implicitly convert type 'string' to 'int'
面向对象
C# 从诞生之初就是面向对象语言,支持封装、继承、多态三大核心特性,一切皆对象。
示例
CSHARP
class Animal
{
public string Name { get; set; }
public virtual void Speak() => Console.WriteLine($"{Name} makes a sound");
}
class Dog : Animal
{
public override void Speak() => Console.WriteLine($"{Name} says: Woof!");
}
var dog = new Dog { Name = "Buddy" };
dog.Speak();
TEXT
Buddy says: Woof!
跨平台
.NET 5+ 统一了原有的 .NET Framework(仅 Windows)和 .NET Core(跨平台),如今一份代码可在 Windows、Linux、macOS 上运行。
现代语法演进
C# 几乎每两年发布一个大版本,持续吸收函数式编程、模式匹配、异步编程等现代语言特性,保持语言活力。
C# 发展简史
| 版本 | 发布年份 | 核心特性 |
|---|---|---|
| C# 1.0 | 2002 | 基础面向对象、类、接口、委托 |
| C# 2.0 | 2005 | 泛型、匿名方法、可空类型 |
| C# 3.0 | 2007 | LINQ、Lambda 表达式、扩展方法、自动属性 |
| C# 4.0 | 2010 | 动态绑定、命名参数、协变逆变 |
| C# 5.0 | 2012 | async/await 异步编程 |
| C# 6.0 | 2015 | 字符串插值、空条件运算符、异常筛选器 |
| C# 7.0 | 2017 | 模式匹配、元组、本地函数 |
| C# 8.0 | 2019 | 可空引用类型、异步流、默认接口方法 |
| C# 9.0 | 2020 | 记录类型、顶级语句、init 访问器 |
| C# 10.0 | 2021 | global using、命名空间范围、常量字符串插值 |
| C# 11.0 | 2022 | 原始字符串字面量、列表模式、required 修饰符 |
| C# 12.0 | 2023 | 主构造函数、集合表达式、内联数组 |
.NET 生态演进
| 阶段 | 名称 | 说明 |
|---|---|---|
| 2002—2019 | .NET Framework | 仅 Windows,最高 4.8,不再新增功能 |
| 2016—2019 | .NET Core | 跨平台重构,1.0 → 2.0 → 3.1 |
| 2020 | .NET 5 | 统一 .NET Core 和 Mono,跳过 4 避免混淆 |
| 2021 | .NET 6 | 首个 LTS(长期支持)统一版本 |
| 2022 | .NET 7 | STS(标准支持)版本 |
| 2023 | .NET 8 | 第二个 LTS 版本,当前推荐生产使用 |
| 2024 | .NET 9 | 最新 STS 版本 |
💡 选择建议:新项目优先使用 .NET 8 LTS,追求最新特性可尝试 .NET 9。避免使用 .NET Framework(除非维护旧项目)。
C# 与其他语言对比
| 对比维度 | C# | Java | C++ | Python |
|---|---|---|---|---|
| 类型系统 | 强类型,类型推断 | 强类型,较啰嗦 | 强类型,更复杂 | 动态类型 |
| 运行方式 | JIT 编译 | JIT 编译 | 原生编译 | 解释执行 |
| 性能 | 高 | 高 | 最高 | 较低 |
| 语法演进 | 快(2年一版) | 慢(3~4年一版) | 稳定 | 中等 |
| 跨平台 | .NET 5+ | JVM | 需重编译 | 原生支持 |
| 游戏开发 | Unity 首选 | LibGDX 等 | Unreal 首选 | 脚本/辅助 |
| 内存管理 | 自动 GC | 自动 GC | 手动 | 自动 GC |
| 入门难度 | 中等 | 中等 | 高 | 低 |
⚠️ C# 与 Java 语法相似度很高,但 C# 演进更快,拥有 LINQ、async/await、属性、运算符重载等 Java 长期缺少的特性。与 C++ 相比,C# 牺牲了极致性能,换来了安全性和开发效率。与 Python 相比,C# 编译执行、类型严格,在大项目中更易维护。
第一个 C# 程序
示例
使用 C# 9.0 引入的顶级语句,只需一行代码:
CSHARP
System.Console.WriteLine("Hello, World!");
TEXT
Hello, World!
示例
传统写法,使用 Main 方法入口(C# 9.0 之前的标准写法):
CSHARP
using System;
namespace HelloWorld
{
class Program
{
static void Main(string[] args)
{
Console.WriteLine("Hello, World!");
}
}
}
TEXT
Hello, World!
💡 两种写法功能完全相同。新项目推荐使用顶级语句,更简洁。理解传统写法有助于阅读旧代码和学习面向对象结构。
如何学好 C#
- 动手实践:每学一个语法点,立刻写代码验证,不要只看不练
- 理解 .NET 运行机制:了解 CLR 如何编译和执行代码,帮助你写出更高效的程序
- 善用 Visual Studio:智能提示、断点调试、性能分析,让开发事半功倍
- 阅读官方文档:Microsoft Learn 是最权威的参考
- 循序渐进:基础语法 → 面向对象 → LINQ → 异步编程 → 项目实战
❓ 常见问题
Q C# 和 .NET 是什么关系?
A C# 是编程语言,.NET 是运行平台;C# 代码编译后运行在 .NET 的 CLR 上,就像汽车(C#)需要道路(.NET)才能行驶。
Q 学 C# 必须用 Windows 吗?
A 不必。.NET 5+ 已支持 Linux 和 macOS,VS Code + C# Dev Kit 即可跨平台开发。
Q .NET Framework 和 .NET 8 有什么区别?
A .NET Framework 是仅 Windows 的旧版,已停止新功能开发;.NET 8 是跨平台的新一代 LTS 版本,推荐所有新项目使用。
Q Unity 脚本用的 C# 和标准 C# 一样吗?
A 语法完全相同,但 Unity 运行在 Mono/.NET Standard 子集上,部分最新 C# 特性可能尚未支持,且 Unity 提供了大量游戏专用 API。
📖 小节
- C# 由微软 Anders Hejlsberg 设计,2002 年发布,运行在 .NET 平台上
- C# 应用广泛:游戏(Unity)、Web(ASP.NET Core)、桌面(WPF)、移动(MAUI)、云(Azure)
- 核心特点:类型安全、面向对象、跨平台、语法持续演进
- .NET 生态从 .NET Framework 演进到 .NET 8 LTS / .NET 9,实现了跨平台统一
- C# 相比 Java 演进更快,相比 C++ 更安全,相比 Python 性能更高、类型更严格
- 新项目推荐使用顶级语句 + .NET 8 LTS
📝 作业
- 安装 .NET SDK,在终端运行
dotnet new console -n MyFirstApp,然后用顶级语句输出自己的名字和一句自我介绍 - 将上面的顶级语句改写为传统
Program.Main写法,对比两种风格的异同 - 查阅资料,列出 C# 3.0 引入的 LINQ 是什么,用一句中文概括它的作用



