C# 语言详解:从基础到高级特性
C#(发音为“C Sharp”)是微软为.NET平台设计的现代、面向对象、强类型 编程语言。它结合了C++的高性能和Java的易用性,同时融入函数式编程特性,成为.NET生态的核心语言。以下是C#的全面解析:
1. C# 的核心特性
(1)面向对象(OOP)
- 类与对象:支持封装、继承、多态。csharp
public class Animal { public string Name { get; set; } // 属性 public virtual void Speak() => Console.WriteLine("Sound"); // 虚方法 } public class Dog : Animal { public override void Speak() => Console.WriteLine("Bark!"); // 重写 } - 接口与抽象类:csharp
public interface IFlyable { void Fly(); } public abstract class Bird : IFlyable { public abstract void Fly(); // 必须由子类实现 }
(2)强类型与类型安全
- 静态类型:编译时检查类型错误。
- 类型推断:
var关键字(编译时确定类型)。csharpvar number = 10; // 编译为 int
(3)现代语法特性
- 属性简化:csharp
public string Name { get; init; } // Init-only属性(C# 9) - 模式匹配(C# 7+):csharp
if (obj is string s) Console.WriteLine(s.Length); - 记录类型(C# 9+):不可变数据模型。csharp
public record Person(string Name, int Age); // 自动生成Equals/ToString
2. C# 的异步编程
(1)async/await 模型
- 简化异步代码,避免回调地狱。csharp
public async Task<string> FetchDataAsync() { var client = new HttpClient(); return await client.GetStringAsync("https://example.com"); } Task和ValueTask:轻量级异步返回值。
(2)并行与并发
Parallel.For:多线程循环。csharpParallel.For(0, 10, i => Console.WriteLine(i));Task.Run:后台线程执行。csharpawait Task.Run(() => ComputeHeavyWork());
3. C# 的高级特性
(1)LINQ(语言集成查询)
- 统一查询语法,支持SQL风格操作集合。csharp
var numbers = new List<int> { 1, 2, 3 }; var evens = from n in numbers where n % 2 == 0 select n; // 或方法语法:numbers.Where(n => n % 2 == 0)
(2)泛型与约束
- 提高代码复用性和类型安全。csharp
public class Repository<T> where T : class, IEntity { public void Add(T entity) { /* ... */ } }
(3)反射与动态编程
dynamic类型:绕过编译时类型检查。csharpdynamic obj = GetExternalData(); Console.WriteLine(obj.Property); // 运行时解析System.Reflection:运行时分析类型。csharpvar type = typeof(Animal); var method = type.GetMethod("Speak");
(4)Span 和 Memory(高性能)
- 避免内存分配,提升处理速度。csharp
Span<int> numbers = stackalloc int[] { 1, 2, 3 }; // 栈上分配
4. C# 版本演进
| 版本 | 年份 | 关键特性 |
|---|---|---|
| C# 1.0 | 2002 | 基础OOP |
| C# 3.0 | 2007 | LINQ、Lambda表达式 |
| C# 5.0 | 2012 | async/await |
| C# 7.0 | 2017 | 模式匹配、元组 |
| C# 9.0 | 2020 | 记录类型、Init-only属性 |
| C# 10 | 2021 | 全局using、文件级命名空间 |
| C# 12 | 2023 | 主构造函数、集合表达式 |
5. C# 应用场景
(1)Web开发(ASP.NET Core)
csharp
// Minimal API示例(C# 10+)
var app = WebApplication.Create();
app.MapGet("/hello", () => "Hello, C#!");
app.Run();(2)桌面开发(WPF/MAUI)
csharp
// WPF按钮事件
private void Button_Click(object sender, RoutedEventArgs e) {
MessageBox.Show("Clicked!");
}(3)游戏开发(Unity)
csharp
// Unity脚本
void Update() {
if (Input.GetKeyDown(KeyCode.Space)) {
Debug.Log("Jump!");
}
}(4)数据科学与ML.NET
csharp
// 训练机器学习模型
var pipeline = mlContext.Transforms.Concatenate("Features", "Age", "Income")
.Append(mlContext.Regression.Trainers.Sdca());6. 学习资源
- 官方文档:Microsoft Learn - C#
- 书籍:《C# in Depth》(Jon Skeet)、《CLR via C#》
- 工具:Visual Studio(调试强大)、Rider(跨平台IDE)。
总结
C# 是一门高性能、多范式的语言,适合从Web到游戏的广泛领域。其持续的版本更新(如C# 12的主构造函数)和.NET生态的紧密结合,使其成为企业级开发和快速迭代的理想选择。如果你熟悉Java或C++,迁移到C#会非常顺畅!