C# 语言简介
在动手装环境之前,我们先认识一下 C# 到底是什么、为什么值得学、能用它做什么。理解了背景,学习的时候会更有的放矢。
一、C# 是什么?
C#(读作 "C Sharp",Sharp 来自音乐符号 ♯ 升半音,寓意是 C 语言的"升级版")是微软在 2000 年发布的一门现代、强类型、面向对象的编程语言。它和 Java 几乎是同龄人——两者都源自 20 世纪 90 年代对 C++ 的反思,但走出了不同的演进路线。
简单概括,C# 的核心特征是:
- 静态强类型:变量类型在编译期确定,编译器帮你抓错误。
- 面向对象:一切皆对象,支持类、继承、多态、接口。
- 编译型(走中间语言):C# 源码编译成 IL,再由 .NET 运行时(CLR)执行,既跨平台又有 JIT 优化。
- 多范式:OO、函数式(LINQ、record)、动态、异步都支持。
- 开源跨平台:2016 年后随 .NET Core 在 Linux/Mac 上原生运行。
二、诞生背景:Anders Hejlsberg 与他的"不满"
C# 的首席设计师是丹麦人 Anders Hejlsberg——一位在编程语言史里绕不开的人物。在设计 C# 之前,他做过这些事:
- 在 Borland 设计了 Turbo Pascal,把 Pascal 编译器做到极速。
- 主导开发 Delphi,被誉为"Windows 上的 VB 杀手"。
- 1996 年被微软挖走,设计了 J++(微软版 Java),结果因 Sun 起诉停止。
- 之后他和团队决定:与其改 Java,不如做一门新语言,这就是 C#。
设计目标非常明确:既要像 C++ 一样强大可控,又要像 Java 一样安全跨平台,还要像 Visual Basic 一样高效。2000 年 7 月,C# 1.0 随 .NET Framework 1.0 公开发布;2001 年成为 ECMA 标准(ECMA-334)。经过二十多年的演进,目前 C# 已发展到 12+ 版本,每年都有新特性。
三、C# 与 .NET 的关系(常被混淆)
初学者最容易搞混 C# 和 .NET,这里一次说清:
- C# 是语言:规定了语法、关键字、类型系统。
- .NET 是平台:包含运行时(CLR,Common Language Runtime)和基础类库(BCL)。C# 编译出的代码跑在 .NET 上。
- 同一个 .NET 上还能跑 F#(函数式)、VB.NET、IronPython 等其他语言。
- 所以"学 C#"和"学 .NET"是两件事,但通常是配套学的。
.NET 的历史版本也容易让人迷惑:.NET Framework(1.0~4.8,仅 Windows,闭源)→ .NET Core(1.0~3.1,跨平台,开源)→ .NET 5/6/7/8/9(统一品牌,跳过 4.x 避免和 Framework 4 混淆)。今天你装的 ".NET SDK" 默认就是最新的 .NET 8 或 9,完全跨平台开源。
四、C# 的核心特点
- 语法简洁现代:分号结尾、大括号分块,但比 Java 写起来顺手得多。
- 属性(Property):用一行
getset替代 Java 的 getter/setter,优雅至极。 - LINQ:把 SQL 式查询融入语言,处理集合的瑞士军刀,后面专门一篇讲。
- async/await:C# 是这门异步语法的发明者,JS/Python/Rust 都借鉴了它。
- 泛型:比 Java 的"类型擦除"实现更彻底,性能更好。
- 可为空引用类型:C# 8 引入,编译期警告空指针,大幅减少 NullReferenceException。
- record 与模式匹配:函数式风格的不可变数据 + 强大的分支匹配,现代 C# 标志。
- 垃圾回收(GC):不用手动管理内存,代际回收性能优秀。
五、第一个 C# 程序
传统写法(老版本与教程里最常见):
using System;
class Program
{
static void Main()
{
Console.WriteLine("Hello, C#!");
}
}
// 输出: Hello, C#!新版 C# 9+ 的顶级语句(推荐简化写法):
// C# 9+ 顶级语句:整个 Program.cs 只有这一行
System.Console.WriteLine("Hello, C#!");
// 编译器自动生成 Program 类与 Main 方法运行它只需要三步:
// 命令行创建并运行
// 1. 安装 .NET SDK(dot.net 下载)
// 2. 终端执行:
// dotnet new console -o Hello
// cd Hello
// dotnet run
// 输出: Hello, C#!细节先不展开,知道"它能跑起来"就够了。下一篇我们专门讲环境安装。
六、C# 都用在哪?典型应用场景
C# 是少有的"全场景"语言——一套语言栈打通好几个开发方向:
- Web 后端:ASP.NET Core,Stack Overflow 后端就是它写的,基准性能长期 Top 3。
- 游戏开发:Unity 引擎市占率超 50%,2D/3D/AR/VR 都用 C# 脚本。
- 跨平台桌面:WPF、WinForms(Windows),Avalonia、MAUI(跨平台)。
- 移动端:.NET MAUI 一套代码跑 iOS/Android。
- 云与微服务:Azure Functions、.NET Aspire、容器化部署。
- 机器学习:ML.NET(微软官方)、Unity 的 Sentis。
- CLI 工具:Microsoft 官方许多工具(dotnet、ef、PowerShell)都用 .NET 写。
七、C# vs 其他语言
- vs Java:语法相似,但 C# 演进更快,有属性、LINQ、async 等现代特性。Java 生态更深更老牌,企业级项目多。
- vs Python:C# 性能远高于 Python,大型项目重构更稳;但 Python 在数据科学/AI 领域生态碾压。
- vs C++:C# 有 GC、有运行时,开发效率高;C++ 性能和无 GC 控制更强,适合引擎/嵌入式。
- vs Go:C# 特性丰富、表达力强;Go 简洁、并发原生,部署单文件更轻量。
- vs TypeScript:语法相似(Anders 也参与了 TS),但 C# 是后端/桌面,TS 是前端。
八、该不该学 C#?
如果你的方向是企业级后端、Windows 桌面、Unity 游戏开发、跨平台移动应用,C# 几乎是必修课。学完本系列,你将能独立用 ASP.NET Core 写一个完整的 Web API、用 Unity 做一个小游戏、读懂开源 .NET 项目源码。
即便主攻其他方向,C# 的设计思想(async/await、LINQ、模式匹配)也会让你看其他语言时豁然开朗——很多新语言的特性,本质都是从 C# "抄"过来的。
← 返回 C# 教程目录
下一篇 C# 与 .NET 环境安装 →