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)<br>{<br> Console.WriteLine("Usage: MyApp <name>");<br> return 1;<br>}<br>Console.WriteLine($"Hello, {args[0]}!");等价于传统写法里的
static void Main(string[] args)+
Environment.Exit(1),但更直观。
需要结构?加命名空间和 using 没问题
顶层语句不排斥组织代码。你可以写:
using System;<br>using static System.Console;<br><br>namespace MyTool;<br><br>WriteLine("Starting...");<br>var now = DateTime.Now;<br>WriteLine($"Time: {now}");using和
namespace放在顶层语句前即可,它们作用于整个文件(包括隐式 Main)。但注意:命名空间不能嵌套在语句块里,必须在最外层。
基本上就这些。它不改变语言能力,只是减少样板代码——写小工具、教学示例或 CLI 脚本时特别顺手,大项目里仍建议回归传统结构以保可维护性。
