2014-06-25 36 views
0

試圖理解!WriteLine與多個值的多行

string myValue1 = "1"; 
string myValue2 = "2"; 

Console.WriteLine(myValue1, myValue2); 

這隻打印出第一個值,如果使用+它將它們連接在一起。有沒有辦法讓兩個值分別打印在不同的行上。 我可以使用兩個WriteLines(每個值爲一個),但我試圖更有效率(或愚蠢)!

+0

您的代碼無法編譯,還你如何將值傳遞給'Console.WriteLine'? – Habib

+0

兩個writelines很好。其他解決方案只是一種微型優化,在現實世界中不會給出任何明顯的結果。 –

+0

他們只是字符串,我想看看我是通過使用兩個writelines在寫軌道,還是有一種方法使用一個writeline爲兩個值做同樣的事情? – Pkzipper

回答

3

使用Environment.NewLine在不同的行上打印值。使用帶有字符串格式和值的Console.WriteLine Method (String, Object[]) overload

Console.WriteLine("{0}{1}{2}", myValue1, Environment.NewLine, myValue2); 

如果這是一個單獨的語句,比我真的懷疑它是否能夠給你任何的性能增益。

+0

謝謝你。它使得這個過載更容易讓我頭腦發熱,我沒有這樣想。 – Pkzipper

+0

@ user3776261,歡迎您,歡迎來到堆棧溢出。 – Habib

1

的concat一個Environment.NewLine //

3

您正在使用的格式過載http://msdn.microsoft.com/en-us/library/828t9b9h(v=vs.110).aspx

這一個支持佔位符{0},{1} ...第一個參數是格式和後續參數放在佔位符中。由於您的字符串沒有任何佔位符,因此第二個值缺失。對於你想要做的事情,你最好直接調用WriteLine兩次。

Console.WriteLine(myValue1); 
Console.WriteLine(myValue2); 

連接新行會使您的代碼難以閱讀。不要試圖這樣高效。這是愚蠢的:)

+0

'效率'所取得的任何收益都會被代碼的可讀性降低所抵消。編寫易於閱讀的代碼更爲「高效」。 – orgtigger

+0

這在我的腦海中計算這個例子很簡單。 – Pkzipper

0

如果有效你的意思寫更少的代碼,你可以這樣做:

static void Main(string[] args) 
    { 
     WriteMultiLine(1,2, "hello", TimeSpan.FromMinutes(3)); 
     Console.ReadLine(); 
    } 

    public static void WriteMultiLine(params object[] values) 
    { 
     foreach (var value in values) 
     { 
      Console.WriteLine(value); 
     } 
    } 

您可以打印任何你想要在不同的線路。

輸出是:

1 
2 
hello 
00:03:00 
+1

看起來像*更多*代碼給我。 :) –

+0

怎麼樣?這將是如果你複製粘貼到每個班級。否則,它是一個單一的行,就像格式中給出的例子一樣,區別在於格式較難寫,而且可能難以理解 –

+0

確定,但是這個例子只是兩個值,所以這可能是過度的。並不是說這是一個糟糕的幫手功能,只是說它不會縮短在一起。 –