Skip to content

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关键字(编译时确定类型)。
    csharp
    var 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");
    }
  • TaskValueTask:轻量级异步返回值。

(2)并行与并发

  • Parallel.For:多线程循环。
    csharp
    Parallel.For(0, 10, i => Console.WriteLine(i));
  • Task.Run:后台线程执行。
    csharp
    await 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 类型:绕过编译时类型检查。
    csharp
    dynamic obj = GetExternalData();
    Console.WriteLine(obj.Property); // 运行时解析
  • System.Reflection:运行时分析类型。
    csharp
    var type = typeof(Animal);
    var method = type.GetMethod("Speak");

(4)Span 和 Memory(高性能)

  • 避免内存分配,提升处理速度。
    csharp
    Span<int> numbers = stackalloc int[] { 1, 2, 3 }; // 栈上分配

4. C# 版本演进

版本年份关键特性
C# 1.02002基础OOP
C# 3.02007LINQ、Lambda表达式
C# 5.02012async/await
C# 7.02017模式匹配、元组
C# 9.02020记录类型、Init-only属性
C# 102021全局using、文件级命名空间
C# 122023主构造函数、集合表达式

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#会非常顺畅!

✨ 网站运行时间: 3年11月15天 ❤️ 道阻且长,行则将至 - 微信号: heikedreamer