簡體   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