C# 输出所有命令行参数

C# 输出所有命令行参数,c#,command-line,C#,Command Line,我正在开发一个控制台应用程序,它接收一个相当长的参数列表。出于调试目的,我需要打印传递到输出文件的参数。现在,我正在使用以下代码来解析命令行参数 static void Main(string[] args) { string Params = string.Empty; foreach(string arg in args) { Params += arg + ","; } } 有没有更好的方法来实现这一点?您可以使用String.Join(“,

我正在开发一个控制台应用程序,它接收一个相当长的参数列表。出于调试目的,我需要打印传递到输出文件的参数。现在,我正在使用以下代码来解析命令行参数

static void Main(string[] args)
{
    string Params = string.Empty;
    foreach(string arg in args)
    {
       Params += arg + ",";
    }
}
有没有更好的方法来实现这一点?

您可以使用String.Join(“,”,args)

怎么样

Params = string.Join(",", args);
您的
foreach
方法的性能不是很好。由于字符串是不可变的,这意味着对于循环的每次迭代,该字符串将被丢弃以进行垃圾收集,并将生成一个新字符串。在
string.Join
情况下,只会生成一个字符串


在循环内部,为了获得相同的性能,您必须使用
StringBuilder
,但在这种情况下,没有理由不使用
string.Join
,因为代码的可读性要高得多。

您可以使用这段代码

String.Join(", ", Environment.GetCommandLineArgs())
你应使用:

string.Join(",", args);

严格来说,Join函数创建一个容量为strings.Length*16的StringBuilder(这16是一个固定的数字)。如果您有不同的参数最大值,并且性能对您至关重要,请使用具有特定容量的StringBuilder。

这里的所有答案都可以将参数与单个逗号结合使用,但我发现这种方法有些不足,因为没有“引用的参数”的明确指标还有那些可能包含逗号的

使用以下示例:
Foo.exe示例“很好”,也“好的”

简单的连接建议将产生:
一个例子,也是“好的”,好的
。不错,但不是很清楚,有点误导

这是我拼凑的对我来说足够有效的东西。我相信它可以进一步改进

String.Join(", ", (from a in args select '"' + a.Replace("\"", @"\""") + '"'));

它返回字符串:
“an”,“example”,“is\“fine\”,too”,“ok”
。我认为这可以更好地指示实际参数。

很抱歉,这无法编译。params是C#中的一个关键字。您必须为字符串选择另一个名称:)auch,我只是降低了cbyte变量名的大小写,因为约定:)+1-还有,string.Join不会像原始代码那样在连接的字符串上留下逗号(我认为这对于@cbyte来说是一件好事)我更喜欢使用空格分隔符,就像原始的逗号行Params=string.Join(“,args”);
static void Main(string[] args)
{
    string Params = string.Empty;
    foreach(string arg in args)
    {
       Params += arg + ",";
    }
}