【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种方式比较灵活,可以由客户端(使用者)自由输入特点范围内的参数,然后程序根据输入的参数来判断执行不同的业务逻辑
【C#基础知识】C#控制台程序入口函数 Main(string[] args) 参数详解的更多相关文章
- C#控制台程序入口函数 Main(string[] args) 参数详解
学习C#编程最常见的示例程序是在控制台应用程序中输出Hello World! using System; namespace DemoMainArgs { class Program { static ...
- Appium+python自动化(十五)- Android 这些基础知识,你知多少???(超详解)
简介 前边具体操作和实战已经讲解和分享了很多了,但是一些android的一些基础知识,你又知道多少了,你都掌握了吗?这篇就由宏哥给小伙伴们既是一个分享,又是对前边的一次总结.为什么要对这些做一个简单的 ...
- Shiro基础知识03----shiro授权(编程式授权),Permission详解,授权流程(zz)
授权,也叫访问控制,即在应用中控制谁能访问哪些资源(如访问页面/编辑数据/页面操作等). 在权限认证中,最核心的是:主体/用户(Subject).权限(Permission).角色(Role).资源 ...
- c语言main函数返回值、参数详解(返回值是必须的,0表示正常退出)
C语言Main函数返回值 main函数的返回值,用于说明程序的退出状态.如果返回0,则代表程序正常退出:返回其它数字的含义则由系统决定.通常,返回非零代表程序异常退出. 很多人甚至市面上的一些书籍,都 ...
- WordPress分类列表函数:wp_list_categories用法及参数详解举例
http://www.511yj.com/wordpress-wp-categories.html 注意: 1. wp_list_categories() 和 list_cats() 以及 wp_li ...
- 熬夜总结vue3中setUp函数的2个参数详解
1.setUp函数的第1个参数props setup(props,context){} 第一个参数props: props是一个对象,包含父组件传递给子组件的所有数据. 在子组件中使用props进行接 ...
- Greenplum入门——基础知识、安装、常用函数
Greenplum入门——基础知识.安装.常用函数 2017年10月08日 22:03:09 在咖啡里溺水的鱼 阅读数:8709 版权声明:本文为博主原创,允许非商业性质转载但请注明原作者和出处 ...
- 程序入口函数和glibc及C++全局构造和析构
分类: CRT Machnasim 2011-06-15 17:45 144人阅读 评论(0) 收藏 举报 c++汇编linuxlist语言编译器 1,程序入口函数和初始化 操作系统在装载可执行文件后 ...
- [SQL] SQL 基础知识梳理(六)- 函数、谓词、CASE 表达式
SQL 基础知识梳理(六)- 函数.谓词.CASE 表达式 目录 函数 谓词 CASE 表达式 一.函数 1.函数:输入某一值得到相应输出结果的功能,输入值称为“参数”,输出值称为“返回值”. 2. ...
随机推荐
- 不难懂————Promise对象 + 详解
1.Promise 的含义 Promise 是异步编程的一种解决方案,比传统的解决方案--回调函数和事件--更合理和更强大.它由社区最早提出和实现,ES6 将其写进了语言标准,统一了用法,原生提供了P ...
- kubernetes sticky session 配置
kubernetes中经常需要配置sticky session,此时需要根据你使用的ingress controller来设置了. 1.Nginx Ingress apiVersion: extens ...
- Ventoy的UEFI模式安全启动操作说明
Ventoy 1.0.07 版本开始支持 Secure Boot (安全启动),但是这个方案不是非常的完美,会导致在一些机器上不管BIOS里安全启动是否关闭都不能正常工作.因此从 1.0.09 版本开 ...
- Java动态绑定和静态绑定-多态
一.问题 Java方法调用过程中,Jvm是如何知道调用的是哪个类的方法?Jvm又是如何处理? 二.概念 a.当子类和父类(接口和实现类)存在同一个方法时,子类重写父类(接口)方法时,程序在运行时调 ...
- Pycharm新建文件时头部模板的配置方法
方法
- HowToDoInJava Spring 教程·翻译完成
原文:HowToDoInJava 协议:CC BY-NC-SA 4.0 欢迎任何人参与和完善:一个人可以走的很快,但是一群人却可以走的更远. ApacheCN 学习资源 目录 Spring 5 Spr ...
- [源码解析] 模型并行分布式训练 Megatron (3) ---模型并行实现
[源码解析] 模型并行分布式训练 Megatron (3) ---模型并行实现 目录 [源码解析] 模型并行分布式训练 Megatron (3) ---模型并行实现 0x00 摘要 0x01 并行Tr ...
- 013 Linux 搞懂「文件所属者更改及权限的赋予」从未如此简单(chmod、chgrp、chown)
目录 01 一图详解「ls -l」 02 两种符号区分表示文件和目录 03 三种访问权限及表示 04 四种符号表示文件所属者用户 05 三个变更文件所属者及修改所属者权限的命令 06 工作实践命令举例 ...
- C++网络编程卷1、卷2概述
转载请注明来源:https://www.cnblogs.com/hookjc/ 一: C++NPv1主要涉及到的类: 1.1. Logging_Server 是个抽象类,用来定义接口类型,此类不能 ...
- Visual Studio 下error C2471: 无法更新程序数据库
转载请注明来源:https://www.cnblogs.com/hookjc/ 解决方案:修改项目属性 右击项目 --> "属性" 1. "C/C++" ...