繁体   English   中英

输出所有命令行参数

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM