介绍与 Hello World
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):
- Windows:装
dotnet-sdk-8.0.x-win-x64.exe - macOS:
brew install --cask dotnet-sdk - Linux:参考 https://learn.microsoft.com/zh-cn/dotnet/core/install/linux
验证:
dotnet --version
# 8.0.1003. 第一个程序
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 package8. 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# 程序。下一章学习程序结构。