介绍与 Hello World

翻译整理自 C# 教程 与 .NET 教程。

1. C# 与 .NET 关系

  • C#:语言
  • .NET:运行时与类库(CLR、BCL、ASP.NET Core、EF Core)
  • SDK:开发工具链,包含编译器、CLI、模板

2. 安装 .NET SDK

前往 https://dotnet.microsoft.com/download 下载最新 LTS(.NET 8 LTS):

验证:

dotnet --version
# 8.0.100

3. 第一个程序

dotnet new console -o hello
cd hello
dotnet run

生成的 Program.cs(C# 10+ 顶级语句):

Console.WriteLine("Hello, World!");

4. 项目结构

hello/
├── hello.csproj      # 项目文件
├── Program.cs        # 入口
└── obj/              # 中间产物

hello.csproj:

<Project Sdk="Microsoft.NET.Sdk">
  <PropertyGroup>
    <OutputType>Exe</OutputType>
    <TargetFramework>net8.0</TargetFramework>
    <ImplicitUsings>enable</ImplicitUsings>
    <Nullable>enable</Nullable>
  </PropertyGroup>
</Project>

5. 编译与运行

dotnet build           # 编译
dotnet run             # 编译并运行
dotnet publish -c Release -o out   # 发布
./out/hello            # 运行产物

6. 命令模板

dotnet new list                       # 列出所有模板
dotnet new console                    # 控制台
dotnet new classlib                   # 类库
dotnet new webapi                     # ASP.NET Core Web API
dotnet new mvc                        # MVC
dotnet new blazor                     # Blazor
dotnet new wpf                        # WPF
dotnet new winforms                   # WinForms
dotnet new test                       # 测试项目

7. NuGet 包管理

dotnet add package Newtonsoft.Json
dotnet add package Microsoft.EntityFrameworkCore --version 8.0.0
dotnet remove package Newtonsoft.Json
dotnet restore
dotnet list package

8. C# 简史

版本 年份 重要特性
C# 1.0 2002 委托、事件
C# 2.0 2005 泛型、匿名方法
C# 3.0 2007 LINQ、lambda、自动属性
C# 4.0 2010 dynamic、命名参数
C# 5.0 2012 async/await
C# 6.0 2015 表达式成员、字符串插值
C# 7.x 2017-2019 pattern matching、tuple、local functions
C# 8.0 2019 nullable reference、async streams
C# 9.0 2020 record、init、顶级语句
C# 10 2021 global using、namespace file
C# 11 2022 required、list patterns
C# 12 2023 primary constructor、collection expressions
C# 13 2024 params collections、ref struct 改进

小结

到此已经能创建、运行 C# 程序。下一章学习程序结构。