C# 语言介绍
导学
核心知识点
C# 的起源与背景
- C#(读作 "C Sharp")是微软于 2000 年左右发布的一种现代编程语言,由 Anders Hejlsberg 主导设计。
- 最初作为 .NET Framework 的核心语言推出,目标是结合 C/C++ 的高性能与 Java 的易用性,打造一门「类型安全、面向对象、现代化」的企业级开发语言。
- 经过多年演进,C# 已从 Windows 专属走向全平台,成为 .NET 生态系统中绝对的核心语言。
C# 的核心定位
- 类型安全:编译器在编译期进行严格的类型检查,防止类型错误导致运行时崩溃。
- 面向对象:从设计之初就全面支持封装、继承、多态、接口等面向对象特性。
- 现代语言:持续引入函数式编程、异步编程、模式匹配等现代编程范式,语法简洁且表达力强。
- 生态核心:C# 是 .NET 平台的第一语言,绝大多数 .NET 框架、库、工具链均以 C# 为优先支持。
TIOBE 与行业地位
- C# 长期稳居 TIOBE 编程语言排行榜前 5 名,是企业级应用、游戏开发、云原生领域的首选语言之一。
- 在微软开源战略推动下,.NET 生态的活跃度与社区规模持续扩大。
核心技术特性
核心知识点
强类型系统与类型安全
C# 是强类型语言,变量类型在编译期确定,类型不匹配会直接编译报错,避免运行时类型错误。
支持值类型(
struct)与引用类型(class),明确区分栈内存与堆内存的使用场景。可空引用类型(C# 8.0+)让空引用异常在编译期即可被检测:
csharp// 可空引用类型示例 string? name = null; // 明确标注可空 string title = name ?? "默认标题"; // 空合并运算符提供默认值
自动内存管理(垃圾回收机制)
C# 运行在 .NET CLR(公共语言运行时)之上,由垃圾回收器(GC)自动管理内存分配与释放。
开发者无需手动
new/delete,GC 会定期回收不再被引用的对象,大幅降低内存泄漏风险。通过
using语句可确保实现IDisposable接口的资源被及时释放:csharpusing var stream = new FileStream("data.txt", FileMode.Open); // 离开作用域后,stream 自动释放
异步编程模型(async/await)
C# 5.0 引入的
async/await关键字,让异步代码写起来像同步代码一样直观。底层基于
Task/ValueTask,配合编译器状态机实现非阻塞 I/O,是高并发服务的基石:csharppublic async Task<string> FetchDataAsync(string url) { using var client = new HttpClient(); string result = await client.GetStringAsync(url); return result; // 不阻塞线程,自动释放线程池资源 }
LINQ 查询能力
LINQ(Language Integrated Query)将查询表达式直接集成到语言中,可用统一语法操作集合、数据库、XML 等数据源。
支持查询语法与方法语法,配合 lambda 表达式可写出极其简洁的数据处理代码:
csharpvar adults = people .Where(p => p.Age >= 18) .OrderBy(p => p.Name) .Select(p => new { p.Name, p.Age }) .ToList();
泛型系统
泛型让代码在保持类型安全的同时实现复用,避免强制类型转换带来的性能损耗与运行时错误。
泛型集合(如
List<T>、Dictionary<TKey, TValue>)是日常开发中最常用的数据结构:csharppublic class Repository<T> where T : class { public List<T> Items { get; } = new(); public void Add(T item) => Items.Add(item); } var repo = new Repository<User>(); repo.Add(new User("张三")); // 编译期类型检查,安全高效
属性与索引器
属性(Property)将字段访问封装为方法调用,支持
get/set访问器,是 C# 中封装数据的标准方式:csharppublic class Person { public string Name { get; set; } = "未知"; // 自动属性 public int Age { get; private set; } // 只读属性(外部只读) public string FullInfo => $"{Name}, {Age}岁"; // 只读表达式属性 }索引器(Indexer)允许对象像数组一样通过索引访问内部元素:
csharppublic class Matrix { private readonly int[,] _data = new int[10, 10]; public int this[int row, int col] { get => _data[row, col]; set => _data[row, col] = value; } }
Lambda 表达式与函数式编程
Lambda 表达式是 C# 中定义匿名函数的简洁语法,配合委托(
Func<>、Action<>、Predicate<>)可实现函数式编程风格:csharp// Lambda 表达式 Func<int, int, int> add = (a, b) => a + b; var numbers = new List<int> { 1, 2, 3, 4, 5 }; var evens = numbers.FindAll(n => n % 2 == 0); // 输出: 2, 4C# 9.0 引入的
record类型进一步强化了不可变数据与模式匹配能力,让函数式风格更加自然。
应用场景覆盖
核心知识点
Windows 桌面应用
- WPF(Windows Presentation Foundation):基于 XAML 的富客户端框架,适合开发复杂的桌面应用(如 Visual Studio 本身)。
- WinUI 3:微软最新的原生 Windows UI 框架,支持 Fluent Design 与现代化控件。
- WinForms:经典的快速开发框架,适合中小型工具软件,维护成本极低。
Web 应用开发
- ASP.NET Core:微软主推的跨平台高性能 Web 框架,支持 MVC、Razor Pages、Blazor、Minimal API 等多种开发模式。
- 内置依赖注入、中间件管道、配置系统,可轻松构建 RESTful API、微服务与实时应用(SignalR)。
- 性能卓越,在 TechEmpower 基准测试中常年位居前列。
跨平台移动应用
- .NET MAUI:统一项目结构,一套代码编译为 Android、iOS、macOS、Windows 原生应用。
- 基于 XAML 的 UI 定义,共享业务逻辑与界面代码,大幅降低多端开发成本。
游戏开发
- Unity:全球最流行的游戏引擎,C# 是其唯一的脚本语言。超过 50% 的移动游戏、大量独立游戏与 AAA 级作品使用 Unity + C# 开发。
- Godot:开源游戏引擎,通过
GodotSharp支持 C# 脚本,近年来在独立游戏社区迅速崛起。
云原生与微服务
- .NET Aspire 提供云原生应用的编排与观测能力,配合 Docker、Kubernetes、Azure 可快速构建分布式系统。
- gRPC、Dapr(分布式应用运行时)等框架让 C# 在微服务架构中具备强大竞争力。
物联网(IoT)开发
- .NET IoT 库支持 Raspberry Pi、传感器、GPIO 控制等场景,可在 Linux 上直接运行 C# 代码操作硬件。
- 结合 Azure IoT Hub,可实现设备接入、数据遥测与远程管理。
机器学习与数据科学
- ML.NET:微软开源的跨平台机器学习框架,支持分类、回归、聚类、异常检测等常见任务。
- TorchSharp:PyTorch 的 .NET 绑定,让 C# 开发者可直接使用深度学习模型。
- 通过 ONNX Runtime 可加载运行 TensorFlow、PyTorch 训练的模型,实现推理加速。
生态与发展
核心知识点
跨平台演进
- 2002-2016:.NET Framework 时代:C# 仅支持 Windows,绑定 IIS 与 SQL Server,生态封闭但稳定。
- 2016-2020:.NET Core 时代:微软重写 .NET 运行时,实现真正的跨平台(Windows、Linux、macOS),性能大幅提升。
- 2020 至今:.NET 5+ 统一时代:.NET Framework、.NET Core、Xamarin 合并为统一的 .NET 平台,C# 成为真正的全平台语言。
最新版本核心更新方向
- C# 12:主构造函数、集合表达式(
[1, 2, 3])、默认 lambda 参数、内联数组。 - C# 13:
field关键字、新的锁对象、部分属性、索引器改进。 - .NET 9:AI 集成增强(Microsoft.Extensions.AI)、云原生改进、性能优化(Native AOT 成熟)。
- C# 12:主构造函数、集合表达式(
开发工具链
- Visual Studio:功能最全的 IDE,智能感知、调试、性能分析、单元测试一应俱全,社区版免费。
- VS Code:轻量级跨平台编辑器,配合 C# Dev Kit 插件可满足日常开发需求。
- JetBrains Rider:跨平台商业 IDE,以 ReSharper 的强大重构能力著称,深受专业开发者喜爱。
官方文档与社区资源
- Microsoft Learn:交互式学习路径,从入门到高级主题全覆盖,全部免费。
- .NET 官方文档:learn.microsoft.com/dotnet,包含 API 参考、教程、最佳实践。
- GitHub:dotnet 组织下开源了 .NET 运行时、ASP.NET Core、Entity Framework Core 等核心项目。
- NuGet:.NET 的包管理器,拥有超过 30 万个第三方库,涵盖日志、ORM、序列化、图像处理等各个领域。
本章知识要点回顾
| 模块 | 核心概念 | 一句话总结 |
|---|---|---|
| 导学 | C# 起源、.NET 生态、核心定位 | C# 是微软主导的现代、类型安全、面向对象语言,.NET 生态的绝对核心 |
| 技术特性 | 强类型、GC、async/await、LINQ、泛型、属性、lambda | 特性丰富且现代,兼顾开发效率与运行性能 |
| 应用场景 | 桌面、Web、移动、游戏、云原生、IoT、机器学习 | 跨平台能力全面,几乎覆盖所有主流开发领域 |
| 生态发展 | 跨平台演进、版本更新、工具链、社区资源 | 从 Windows 专属到全平台,生态成熟且持续进化 |
全章核心结论
- C# 是什么:一门由微软主导设计的现代、类型安全、面向对象的高级编程语言,.NET 生态系统的核心。
- 为什么学 C#:语法现代优雅、生态成熟稳定、跨平台能力强大、就业市场广阔(企业级应用 + 游戏开发)。
- C# 的独特优势:在保持 Java 级工程化能力的同时,语法更简洁、表达力更强,且在游戏与桌面领域无可替代。
- C# 适合谁:从编程入门者到资深架构师,从企业后端到独立游戏开发者,都能找到适合自己的路径。
- 正确打开方式:选定一个方向(Web / 桌面 / 游戏 / 移动),配合官方文档与项目实战,逐步深入 .NET 生态。