Skip to content

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 接口的资源被及时释放:

      csharp
      using var stream = new FileStream("data.txt", FileMode.Open);
      // 离开作用域后,stream 自动释放
  • 异步编程模型(async/await)

    • C# 5.0 引入的 async/await 关键字,让异步代码写起来像同步代码一样直观。

    • 底层基于 Task/ValueTask,配合编译器状态机实现非阻塞 I/O,是高并发服务的基石:

      csharp
      public 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 表达式可写出极其简洁的数据处理代码:

      csharp
      var adults = people
          .Where(p => p.Age >= 18)
          .OrderBy(p => p.Name)
          .Select(p => new { p.Name, p.Age })
          .ToList();
  • 泛型系统

    • 泛型让代码在保持类型安全的同时实现复用,避免强制类型转换带来的性能损耗与运行时错误。

    • 泛型集合(如 List<T>、Dictionary<TKey, TValue>)是日常开发中最常用的数据结构:

      csharp
      public 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# 中封装数据的标准方式:

      csharp
      public class Person
      {
          public string Name { get; set; } = "未知";   // 自动属性
          public int Age { get; private set; }         // 只读属性(外部只读)
          public string FullInfo => $"{Name}, {Age}岁"; // 只读表达式属性
      }
    • 索引器(Indexer)允许对象像数组一样通过索引访问内部元素:

      csharp
      public 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, 4
    • C# 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 成熟)。
  • 开发工具链

    • 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 专属到全平台,生态成熟且持续进化

全章核心结论 ​

  1. C# 是什么:一门由微软主导设计的现代、类型安全、面向对象的高级编程语言,.NET 生态系统的核心。
  2. 为什么学 C#:语法现代优雅、生态成熟稳定、跨平台能力强大、就业市场广阔(企业级应用 + 游戏开发)。
  3. C# 的独特优势:在保持 Java 级工程化能力的同时,语法更简洁、表达力更强,且在游戏与桌面领域无可替代。
  4. C# 适合谁:从编程入门者到资深架构师,从企业后端到独立游戏开发者,都能找到适合自己的路径。
  5. 正确打开方式:选定一个方向(Web / 桌面 / 游戏 / 移动),配合官方文档与项目实战,逐步深入 .NET 生态。