Hello World 与 LINQ 入门

知识库
知识库文档
/tech-stacks/csharp/examples/Hello World 与 LINQ 入门.md

文档

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

异步操作演示:
  开始请求数据...
  数据获取完成!

关键点

  • 顶级语句:无需写 Mainclass Program,简洁上手
  • LINQ:两种写法——查询语法(类似 SQL)和方法链
  • 模式匹配switch 表达式优雅处理多条件判断
  • async/await:非阻塞异步,适合 I/O 密集型操作
  • record:不可变数据类,自动生成 Equals/ToString

信息

路径
/tech-stacks/csharp/examples/Hello World 与 LINQ 入门.md
更新时间
2026/5/30