文档
C# Hello World 与 LINQ 入门
目标
展示 .NET 8 控制台应用的 Hello World,以及 LINQ 查询、async/await 的基本用法。
完整代码
// Program.cs - .NET 8 顶级语句
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
// 1. Hello World
Console.WriteLine("Hello, .NET 8 World!");
// 2. 记录类型 (C# 9+)
var students = new List<Student>
{
new("张三", 22, 88.5),
new("李四", 21, 92.0),
new("王五", 23, 76.5),
new("赵六", 22, 95.0),
new("钱七", 21, 85.0),
};
// 3. LINQ 查询:找出年龄 > 21 且分数 >= 90 的学生
var topStudents = from s in students
where s.Age > 21 && s.Score >= 90
orderby s.Score descending
select new { s.Name, s.Score, Grade = GetGrade(s.Score) };
Console.WriteLine("\n优秀学生:");
foreach (var s in topStudents)
{
Console.WriteLine($" {s.Name}: {s.Score}分, 等级: {s.Grade}");
}
// 方法链式写法
var avgScore = students.Where(s => s.Age == 22).Average(s => s.Score);
Console.WriteLine($"\n22岁学生平均分: {avgScore:F1}");
// 4. async/await 异步
Console.WriteLine("\n异步操作演示:");
await FetchDataAsync();
Console.WriteLine("\n按任意键退出...");
Console.ReadKey();
// 辅助方法
static string GetGrade(double score) => score switch
{
>= 90 => "A",
>= 80 => "B",
>= 70 => "C",
>= 60 => "D",
_ => "F"
};
static async Task FetchDataAsync()
{
Console.WriteLine(" 开始请求数据...");
await Task.Delay(1500); // 模拟异步 I/O
Console.WriteLine(" 数据获取完成!");
}
// 记录类型
record Student(string Name, int Age, double Score);
运行步骤
# 创建项目
dotnet new console -n HelloCSharp
cd HelloCSharp
# 替换 Program.cs 内容后运行
dotnet run
预期输出
Hello, .NET 8 World!
优秀学生:
赵六: 95分, 等级: A
张三: 88.5分, 等级: B
22岁学生平均分: 91.8
异步操作演示:
开始请求数据...
数据获取完成!
关键点
- 顶级语句:无需写
Main和class Program,简洁上手 - LINQ:两种写法——查询语法(类似 SQL)和方法链
- 模式匹配:
switch表达式优雅处理多条件判断 - async/await:非阻塞异步,适合 I/O 密集型操作
- record:不可变数据类,自动生成 Equals/ToString