顶层语句是C# 9引入的简化语法,编译器自动生成隐式Main方法,适用于脚本、工具或学习场景;需.NET 5+控制台项目且LanguageVersion≥9.0,仅限一个Program.cs文件使用,支持args和return,可配合using/namespace组织代码。

Top-level statements(顶层语句)是 C# 9 引入的简化语法,让你不用写 class Program 和 static void Main() 就能直接写可执行代码。它不是“去掉 Main”,而是编译器帮你自动生成一个隐式的 Main 方法——适合脚本、工具、学习或小型程序。
什么时候可以用顶层语句
项目 SDK 必须是 Microsoft.NET.Sdk(即普通 .NET 5+ 控制台项目),且 LanguageVersion 至少为 9.0(VS 2019 16.8+ 或 VS 2022 默认支持)。新建 .NET 6+ 控制台项目时,默认就是顶层语句风格。
- 一个项目中只能有一个
.cs文件包含顶层语句(通常叫Program.cs) - 其他文件仍可写常规类、方法、命名空间——顶层文件里也能用
using、声明局部函数、甚至定义类型(但不推荐) - 不能在类/方法内部写顶层语句;也不能在多个文件里同时写执行逻辑
最简写法:直接写代码
新建一个 Program.cs,内容可以只有这一行:
Console.WriteLine("Hello, World!");编译运行就输出 —— 编译器自动把它包进 static void Main(string[] args) 里。你不需要声明命名空间、类或 Main 方法。
访问命令行参数和返回值
顶层语句中,args 直接可用(对应 Main 的参数),也可以用 return 设置退出码:
if (args.Length == 0)
{
Console.WriteLine("Usage: MyApp");
return 1;
}
Console.WriteLine($"Hello, {args[0]}!");
等价于传统写法里的 static void Main(string[] args) + Environment.Exit(1),但更直观。
需要结构?加命名空间和 using 没问题
顶层语句不排斥组织代码。你可以写:
using System;
using static System.Console;
namespace MyTool;
WriteLine("Starting...");
var now = DateTime.Now;
WriteLine($"Time: {now}");
using 和 namespace 放在顶层语句前即可,它们作用于整个文件(包括隐式 Main)。但注意:命名空间不能嵌套在语句块里,必须在最外层。
基本上就这些。它不改变语言能力,只是减少样板代码——写小工具、教学示例或 CLI 脚本时特别顺手,大项目里仍建议回归传统结构以保可维护性。










