我正在开发一个控制台应用程序,它接收了很长的参数列表。出于调试目的,我需要打印传递给输出文件的参数。现在,我使用以下代码来连接命令行参数。
static void Main(string[] args)
{
string Params = string.Empty;
foreach(string arg in args)
{
Params += arg + ",";
}
}
有没有更好的方法来实现这个目标?
答案 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。