c#命令行参数:c#读取命令行参数,获取当前进程的命令行参数

发布时间:2020-06-18编辑:脚本学堂
c#如何读取命令行参数,c#获取当前进程的命令行参数的方法,并介绍了c#无限参数与可变参数的实例代码,不了解的朋友可以参考下。

一、c#读取命令行参数的方法

c#读取命令行参数的方法,可实现读取程序输入命令行的所有参数,方便调试程序。

例子,从命令行读取参数,参数个数不定,程序将会输出用户在命令行输入的所有参数列表。
 

复制代码 代码示例:
using System;
namespace W3M
{
  class ArgsExample
  {
   public static int Main(string[] args)
   {
 for (int i = 0; i < args.Length; i++)
 {
  Console.WriteLine(args[i]);
 }
 return 0;
   }
  }
}

二、c# 获取当前进程的命令行参数

例子:
 

String commandLineString =System.Environment.CommandLine;
String[] args = System.Environment.GetCommandLineArgs();
 

Reference:
MSDN
方式一:
获取该进程的命令行。
命名空间:   System
程序集:  mscorlib(在 mscorlib.dll 中)
public static string CommandLine { get; }
属性值
类型:System.String
包含命令行参数的字符串。
备注
该属性允许访问在启动当前进程时在命令行上指定的程序名和任何参数。
程序名可以(但不是必须)包含路径信息。使用 GetCommandLineArgs 方法可检索在字符串数组中分析和存储的命令行信息。
命令行缓冲区的最大大小并不设置为特定字符数;它根据计算机上运行的 Windows 操作系统而有所不同。
Windows NT 4.0, Windows 2000, Windows XP Home Edition, Windows XP Professional x64 Edition, Windows Server 2003 平台说明:
可执行文件的名称不包含该路径。
 
Windows 98, Windows Millennium Edition 平台说明:
可执行文件的名称包含该路径。长文件名(非 8.3 名称)可以缩短到它们的 8.3 表示形式。
 
方式二:
返回包含当前进程的命令行参数的字符串数组。
命名空间:  System
程序集:  mscorlib(在 mscorlib.dll 中)
返回值
类型:System.String[]
public static string[] GetCommandLineArgs()

字符串数组,其中的每个元素都包含一个命令行参数。第一个元素是可执行文件名,后面的零个或多个元素包含其余的命令行参数。
 
备注:
数组中的第一个元素包含执行程序的文件名。如果该文件名不可用,则第一个元素等于 String.Empty。其他元素包含在命令行输入的任何附加标记。
程序文件名可以(但不是必须)包含路径信息。
命令行参数由空格分隔。可以使用双引号 (") 在参数中包含空格。但是,单引号 (') 不提供此功能。
如果两个或偶数个反斜杠后跟双引号,则前面的每个反斜杠对被一个反斜杠替代,并且双引号被删除。如果奇数个(包括仅仅一个)反斜杠后跟双引号,则前面的每个反斜杠对被一个反斜杠替代,其余的反斜杠被删除;但在此情况下,双引号不会被删除。
下表显示如何分隔命令行参数,并假定 MyApp 为当前执行的应用程序。

三、C#无限参数的写法

C#无限参数的写法,通过循环遍历再结合paras.Add方法实现无限参数的功能。

声明了list<class> paras,添加每一个para,都需要写paras.Add(para),如果能写成paras.Add(para1,para2,...)那就好了
查资料,C#的无限参数关键词是params,List<Class>可以用泛型来代替,再写List<T>的扩展方法。

代码:
 

复制代码 代码示例:
public static void AddParas<T>(this List<T> paras, params T[] para) {
for (int i = 0; i < para.Length; i++)
{
  paras.Add(para[i]);
  }
}

四、c#可变参数实现代码

c#中实现可变参数实例,使用params 实现可变数量的参数,并且这些参数的类型可以不同。

c语言的printf函数,参数的数量可以是可变的。使用 va_start 和 va_end  实现。
c++中,实现参数可变,可以用 overload。如果参数数量不是很多的话,可以一个参数实现一个函数,两个参数再实现一个函数,三个参数再实现一个函数...

或使用c的方案。
c#中,也可以用 overload。或者 params 关键字。
下述代码除了演示 params 实现变数量的参数,还演示了 这些参数的类型不必相同。

输出:
1
2
one
two
aa
one
two
aa
1
2

完整代码:
 

复制代码 代码示例:

namespace @params
{
class Program
{
public string value = "aa";
static void Main(string[] args)
{
Program p = new Program();

foo(1, 2, "one", "two", p);
Console.WriteLine();
foo("one", "two", p, 1, 2 );
}

public static void foo(params object[] list)
{
foreach(object o in list)
{
if (o.GetType() == typeof(int))
{
Console.WriteLine(o);
}
else if (o.GetType() == typeof(string))
{
Console.WriteLine(o);
}
else if (o.GetType() == typeof(Program))
{
Console.WriteLine(((Program)o).value);
}
}
}
}
}