输出所有命令行参数

时间:2011-02-03 09:58:40

标签: c# command-line

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

static void Main(string[] args)
{
    string Params = string.Empty;
    foreach(string arg in args)
    {
       Params += arg + ",";
    }
}

有没有更好的方法来实现这个目标?

6 个答案:

答案 0 :(得分:6)

怎么样?
Params = string.Join(",", args);

您的foreach方法效率不高。由于字符串是 immutable ,这意味着对于循环的每次迭代,字符串将被扔掉以进行垃圾收集,并且将生成新的字符串。在string.Join情况下,只会生成一个字符串。

在循环内部,要获得相同的性能,你必须使用StringBuilder,但在这种情况下,它真的没有理由不使用string.Join,因为代码将更具可读性

答案 1 :(得分:2)

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

答案 2 :(得分:2)

你可以使用这段代码

String.Join(", ", Environment.GetCommandLineArgs())

答案 3 :(得分:1)

这里将所有参数与单个逗号相结合的答案都可以使用,但我发现这种方法有点缺乏,因为没有明确的“引用参数”指示符和可能包含逗号的参数。

使用示例:Foo.exe an example "is \"fine\", too" okay

简单的加入建议将产生:an, example, is "fine", too, okay。不错,但不是很清楚,有点误导。

这是我扔在一起对我有用的东西。我相信它可以进一步改进。

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

返回字符串:"an", "example", "is \"fine\", too", "okay"。我认为这可以更好地指出实际参数。

答案 4 :(得分:0)

String params = String.Join(",", args);

答案 5 :(得分:0)

您应该使用:

string.Join(",", args);

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