【C#基础知识】C#控制台程序入口函数 Main(string[] args) 参数详解
测试环境vs2019+.net5.0 请看 :https://cloud.tencent.com/developer/article/1507934
本测试环境vs2022+.net6.0 +window 10
学习C#编程最常见的示例程序是在控制台应用程序中输出Hello World!
//C#9 .net5.0 using System; namespace DemoMainArgs { class Program { static void Main(string[] args) { Console.WriteLine("Hello World!"); Console.ReadLine(); } } } //C# 10 .net 6.0 Console.WriteLine("Hello World!"); //系统会自动生成命名空间(项目名称)和Program 类。args 不用声明,系统默认agr就是main函数的string[] args参数
- static:是将Main方法声明为静态, 是应用程序的入口。
- void:说明main方法不会返回任何内容。
- string[]args:这是用来接收命令行传入的参数。string[]是声明args的数据类型,可以存储字符串数组。
- 可有再多个类中分布main函数,然后再项目属性=>常规=>启动对象 要将哪一个类中的main函数设定为入口点
通过cmd.exe程序来启动上述程序时会弹出命令窗口,你可以在那里输入一些参数,string[] args 指的就是在命令窗口输入的参数, 也就是命令行参数。
args是用来接收命令行参数的。它是可选项,不是必须的。
下面通过一个具体的示例程序来说明。
1. 新建控制台程序DemoMainArgs。
2. 编写代码。
//C#10 .net6.0 Console.WriteLine("该程序接收多个参数 用空格 来做参数分隔符"); Console.WriteLine($"main函数参数agrs 的长度{args.Length} "); int i = 1; foreach (var s1 in args) { Console.WriteLine($"参数{i++}:{s1}"); } Console.WriteLine(args); Console.ReadKey(); //c# 9.0 .net5.0 using System; namespace ConsoleApp6 { class Program { static void Main(string[] args) { Console.WriteLine("该程序接收多个参数 用空格 来做参数分隔符"); Console.WriteLine($"main函数参数agrs 的长度{args.Length} "); int i = 1; foreach (var s1 in args) { Console.WriteLine($"参数{i++}:{s1}"); } Console.WriteLine(args); Console.ReadKey(); } } }
3. 编译,生成ConsoleApp6.exe文件。
4、用ILSpy 打开ConsoleApp6.dll 发现 .net 6.0 C#10 编写的代码都是在main函数中 ,系统自动生成了program 类。
5、设定哪个类作为函数入口点、如果就一个main函数,那么默认未配置
下面通过3种方式来展示具体效果
方式一 :命令行中启动程序并输入参数
应用程序目录 的地址栏中输入cmd 回车 ,输入路径+DemoMainArgs,空一格,再输入 a b c d(可以输入任意多个参数,多个之间用空格分隔)
输入应用程序名和 参数(可以输入任意多个参数,多个之间用空格分隔)Enter回车查看结果如下:
方式二:编译前输入参数
右键点击【项目】--》【属性】,弹出配置界面。选择【调试】--》【命行参数】文本框中输入任意的参数,多个之间用空格分隔
配置完成后,系统生成Properties\launchSettings.json 文件保存这些配置:
按下F5编译并运行,直接看到输出
方式三:通过在程序的快捷方式中增加参数【推荐】
程序编译后,创建快捷方式程序。右键点击【ConsoleApp6.exe】--》【创建快捷方式】
产生了快捷方式文件,如下:
右键点击【ConsoleApp6.exe 快捷方式】--》【属性】--》【快捷方式】--》【目标】,在文本框的最后输入任意参数,
多个之间用空格分开
双击【ConsoleApp6.exe 快捷方式】,运行结果如下
总结:第3种方式比较灵活,可以由客户端(使用者)自由输入特点范围内的参数,然后程序根据输入的参数来判断执行不同的业务逻辑