[英]Output all command line parameters
我正在研究一个控制台应用程序,它接收了很长的参数列表。 出于调试目的,我需要打印传递给输出文件的参数。 现在,我使用以下代码来连接命令行参数。
static void Main(string[] args)
{
string Params = string.Empty;
foreach(string arg in args)
{
Params += arg + ",";
}
}
有没有更好的方法来实现这一目标?
关于什么
Params = string.Join(",", args);
你的foreach
方法foreach
不高。 由于字符串是不可变的 ,这意味着对于循环的每次迭代,字符串将被抛弃以进行垃圾收集,并且将生成新的字符串。 在string.Join
情况下,只会生成一个字符串。
在循环内部,为了获得相同的性能,你将不得不使用StringBuilder
,但在这种情况下,它真的没有理由不使用string.Join
因为代码将更具可读性。
你可以使用String.Join(“,”,args)
你可以使用这段代码
String.Join(", ", Environment.GetCommandLineArgs())
这里将所有参数与单个逗号相结合的所有答案都可以使用,但我发现这种方法缺乏某种程度,因为没有明确的“引用参数”指示和可能包含逗号的指示。
使用示例: 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"
。 我认为这可以更好地指出实际参数。
String params = String.Join(",", args);
你应该使用:
string.Join(",", args);
严格来说,Join函数创建一个带有容量字符串的StringBuilder .Length * 16(这16是一个固定的数字)。 如果您有不同的args最大大小,并且性能对您至关重要,请使用具有特定容量的StringBuilder。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.