C#无显式Main方法时命令行参数args的来源是哪里?
问题解答
1. 程序入口点说明
ASP.NET Core 6 模板默认使用 C# 9 引入的顶级语句语法简化启动代码,看不到显式声明的Main方法不代表没有入口点:
- 编译器会自动为包含顶级语句的Program.cs文件生成隐含的
<Program>类,以及标准的static async Task Main(string[] args)方法作为程序唯一入口 - 你在Program.cs里写的所有全局代码,都会被编译器自动放到这个生成的Main方法内部按顺序执行
2. args参数的来源
代码里直接使用的string[] args是顶级语句语法的内置参数:
- 编译器生成Main方法时,会自动将运行程序时传入的命令行参数赋值给这个内置的args变量,和传统写法里手动声明的
Main方法的入参完全等价 - 你将其传入
WebApplication.CreateBuilder(args)后,ASP.NET Core 会自动把命令行参数纳入配置系统,后续可以通过IConfiguration读取对应配置项
你可以直接在Program.cs最开头添加代码验证逻辑:
Console.WriteLine($"传入的命令行参数数量:{args.Length}"); foreach (var arg in args) { Console.WriteLine(arg); }
编译后在命令行启动程序时携带参数,就能看到对应输出,和其他编程语言的命令行参数获取逻辑完全一致。
内容的提问来源于stack exchange,提问作者Ardent Coder
相关产品推荐
相关产品推荐

