C# 概述与环境配置

00:00
7 min Beginner 2026/6/14

C# 语言概述、.NET 生态、.NET 8/9 新特性、环境搭建与 Hello World

1. C# 语言概述

C#(读作 “C Sharp”)是由微软在 2000 年发布的现代、面向对象、类型安全的编程语言。它由 Anders Hejlsberg 领导设计,最初作为 .NET 战略的核心语言推出。C# 融合了 C/C++ 的强大能力和 Java 的简洁优雅,同时不断引入函数式编程、异步编程等现代范式。

1.1 核心特点

特点描述优势
类型安全强类型系统,编译期检查类型兼容性减少运行时错误,提高代码可靠性
面向对象完整支持封装、继承、多态代码复用性强,结构清晰
跨平台基于 .NET 运行于 Windows/Linux/macOS一次编写,多处运行
垃圾回收自动内存管理,无需手动释放减少内存泄漏风险
异步优先async/await 原生语言级支持简化异步编程模型
多范式支持面向对象、函数式、泛型编程灵活应对不同场景
持续演进每年一个版本,快速迭代始终保持语言现代化

1.2 C# 版本演进

版本发布年份对应 .NET主要特性
C# 1.02002.NET 1.0基础面向对象、委托、事件
C# 2.02005.NET 2.0泛型、匿名方法、可空类型、迭代器
C# 3.02007.NET 3.5LINQ、Lambda 表达式、扩展方法、自动属性
C# 4.02010.NET 4.0dynamic、命名参数、协变逆变
C# 5.02012.NET 4.5async/await、调用方信息
C# 6.02015.NET 4.6字符串插值、空条件运算符、表达式体成员
C# 7.x2017-2018.NET Core 2.x模式匹配、元组、本地函数、ref return
C# 8.02019.NET Core 3.1可空引用类型、异步流、范围与索引
C# 9.02020.NET 5顶级语句、记录类型、init 访问器、模式匹配增强
C# 102021.NET 6全局 using、文件范围命名空间、常量字符串插值
C# 112022.NET 7原始字符串字面量、列表模式、required 修饰符
C# 122023.NET 8主构造函数、集合表达式、内联数组
C# 132024.NET 9params 集合、扩展类型、lock 对象、partial 属性

2. .NET 生态系统

2.1 .NET 架构概览

┌─────────────────────────────────────────────────┐
│                  应用层 (Apps)                    │
│  ASP.NET Core │ MAUI │ Blazor │ 游戏 │ 微服务    │
├─────────────────────────────────────────────────┤
│               BCL (基础类库)                      │
│  集合 │ IO │ 网络 │ LINQ │ 并行 │ 诊断           │
├─────────────────────────────────────────────────┤
│              .NET Runtime                        │
│  CLR/CoreCLR │ GC │ JIT │ 类型系统 │ 线程池      │
├─────────────────────────────────────────────────┤
│              操作系统 / 容器                      │
│  Windows │ Linux │ macOS │ Docker │ K8s          │
└─────────────────────────────────────────────────┘

2.2 .NET 8 新特性

  • 性能提升:JIT 编译优化、动态 PGO(Profile-Guided Optimization)默认启用
  • Native AOT 增强:更小的二进制体积、更好的反射支持
  • ASP.NET Core:Blazor SSR、新的身份认证 API
  • EF Core:复杂类型(Complex Types)、原始 SQL 查询增强
  • 新的数值类型Int128UInt128
// C# 12 主构造函数
public class ProductService(ILogger logger, IRepository repo)
{
    public Product GetProduct(int id)
    {
        logger.LogInformation("获取产品: {Id}", id);
        return repo.GetById<Product>(id);
    }
}

// C# 12 集合表达式
int[] numbers = [1, 2, 3, 4, 5];
List<string> names = ["Alice", "Bob", "Charlie"];
int[] combined = [..numbers, 6, 7, 8]; // 展开并合并

2.3 .NET 9 新特性

  • 性能飞跃:Server GC 优化、新的 SIMD 加速
  • ASP.NET Core:内置 OpenAPI 支持、静态资产优化
  • LINQ 增强CountByAggregateByIndex 方法
  • 新的 lock 语义System.Threading.Lock 对象替代 Monitor
// .NET 9 LINQ 新方法
var counts = words.CountBy(w => w.Length);
// 结果: [{ Key: 3, Value: 5 }, { Key: 5, Value: 3 }, ...]

var aggregated = orders.AggregateBy(
    keySelector: o => o.CustomerId,
    seed: 0m,
    func: (sum, order) => sum + order.Amount);

// C# 13 新的 lock 对象
Lock lockObj = new();
using (lockObj.EnterScope())
{
    // 线程安全操作
}

3. 开发环境搭建

3.1 安装 .NET SDK

# Windows - 使用 winget
winget install Microsoft.DotNet.SDK.9

# macOS - 使用 Homebrew
brew install dotnet-sdk

# Linux (Ubuntu)
sudo apt-get update && sudo apt-get install -y dotnet-sdk-9.0

# 验证安装
dotnet --version
dotnet --list-sdks

3.2 Visual Studio 2022

Visual Studio 是 Windows 平台上最强大的 C# 开发 IDE:

  • Community 版:免费,适合个人开发者和开项目
  • Professional 版:适合小型团队,含企业级工具
  • Enterprise 版完整功能,含代码分析负载测试

推荐工作负载

  • ASP.NET 和 Web 开发
  • .NET 桌面开发
  • Azure 开发
  • 游戏开发(Unity 工作负载)

3.3 Visual Studio Code

轻量级平台方案,适合日常开发

# 安装 C# Dev Kit 扩展
# 扩展 ID: ms-dotnettools.csdevkit

# 常用配套扩展
# - C# (OmniSharp): 语言服务
# - NuGet Package Manager: 包管理
# - REST Client: API 测试

VS Code 配置.vscode/settings.json):

{
  "csharp.experimental.debug.hotReload": true,
  "omnisharp.enableRoslynAnalyzers": true,
  "omnisharp.enableEditorConfigSupport": true,
  "dotnet.backgroundAnalysis.analyzerDiagnosticsScope": "fullSolution"
}

3.4 JetBrains Rider

跨平台商业 IDE,基于 IntelliJ 平台和 ReSharper 技术:

  • 智能代码分析和重构
  • 内置数据库工具
  • Unity/Unreal 游戏开发支持
  • Docker 和 Kubernetes 集成
  • 强大的调试性能分析工具

4. 项目类型与创建

4.1 常用项目模板

# 控制台应用
dotnet new console -n MyApp

# ASP.NET Core Web API
dotnet new webapi -n MyApi

# ASP.NET Core MVC
dotnet new mvc -n MyWeb

# Blazor Server / WebAssembly
dotnet new blazor -n MyBlazor

# 类库
dotnet new classlib -n MyLib

# Worker Service(后台服务)
dotnet new worker -n MyWorker

# xUnit 测试项目
dotnet new xunit -n MyTests

# MAUI 跨平台应用
dotnet new maui -n MyMauiApp

# 解决方案文件
dotnet new sln -n MySolution

4.2 项目结构

MyApp/
├── MyApp.csproj          # 项目文件(SDK 风格)
├── Program.cs            # 入口文件
├── appsettings.json      # 配置文件
├── GlobalUsings.cs       # 全局 using 声明
├── Models/               # 数据模型
├── Services/             # 业务逻辑
└── Controllers/          # 控制器(Web API)

4.3 csproj 文件(SDK 风格)

<Project Sdk="Microsoft.NET.Sdk">
  <PropertyGroup>
    <TargetFramework>net9.0</TargetFramework>
    <Nullable>enable</Nullable>
    <ImplicitUsings>enable</ImplicitUsings>
    <RootNamespace>MyApp</RootNamespace>
    <Version>1.0.0</Version>
  </PropertyGroup>
  <ItemGroup>
    <PackageReference Include="Serilog" Version="4.2.0" />
    <PackageReference Include="Polly" Version="8.5.0" />
  </ItemGroup>
</Project>

4.4 常用 CLI 命令

# 构建与运行
dotnet build                    # 构建项目
dotnet run                      # 运行项目
dotnet run --launch-profile Dev # 指定配置运行

# 包管理
dotnet add package Newtonsoft.Json    # 添加 NuGet 包
dotnet add package Serilog --version 4.2.0
dotnet remove package Newtonsoft.Json # 移除包
dotnet list package                   # 列出包
dotnet list package --outdated        # 检查过期包

# 发布
dotnet publish -c Release -o ./publish
dotnet publish -c Release -r linux-x64 --self-contained
dotnet publish -c Release -r win-x64 -p:PublishAot=true  # Native AOT

# 其他
dotnet test                     # 运行测试
dotnet format                   # 代码格式化
dotnet tool install -g dotnet-ef # 全局工具安装

5. Hello World

5.1 顶级语句(C# 9+)

// Program.cs - 最简形式
Console.WriteLine("Hello, World!");

// 使用变量和表达式
var name = "C# 开发者";
var version = Environment.Version;
Console.WriteLine($"你好, {name}! 当前 .NET 版本: {version}");

// 顶级语句中的方法
int Add(int a, int b) => a + b;
Console.WriteLine($"1 + 2 = {Add(1, 2)}");

// 异步入口
await Task.Delay(100);
Console.WriteLine("异步 Hello World!");

5.2 传统 Main 方法

using System;

namespace MyApp;

class Program
{
    static void Main(string[] args)
    {
        Console.WriteLine("Hello, World!");

        if (args.Length > 0)
        {
            Console.WriteLine($"参数: {string.Join(", ", args)}");
        }
    }
}

5.3 ASP.NET Core 最小 API

var builder = WebApplication.CreateBuilder(args);
var app = builder.Build();

app.MapGet("/", () => "Hello, World!");
app.MapGet("/hello/{name}", (string name) => $"你好, {name}!");

app.Run();

6. .NET 版本选择指南

场景推荐 .NET 版本说明
项目.NET 9 (LTS)最新长期支持版本
企业生产.NET 8 (LTS)稳定长期支持版本
维护项目.NET 6 (LTS)旧版长期支持,2026年11月到期
游戏开发.NET Standard 2.1 / .NET 8取决于 Unity 版本
开发netstandard2.0 或 net8.0最大化兼容性

提示:.NET 采用 STS(标准支持,18个月)和 LTS(长期支持,36个月)交替发布策略。.NET 8 和 .NET 9 均为重要版本,新项目建议直接使用 .NET 9。

知识检测

学习进度

-- 已学文档
--% 知识覆盖率

学习推荐

专注模式