2015-12-03 87 views
0

有人可以解釋這兩個代碼的區別。打印變量到控制檯

Console.WriteLine("Our total"+ total); 

Console.WriteLine("Our total {0}", total); 

哪些代碼或多或少正確比其他?

+0

後者應是'Console.WriteLine(的String.Format( 「我們的總{0}」,總計));' – Irshad

+1

兩種方式都是正確的 –

+1

@Irshad,不正確的,這兩種工作就好了 – wjvander

回答

1

兩種變體都是正確的,在這種情況下實際上是等效的。 一個使用字符串連接,你把所有需要的字符串,只是+他們在一起。

另一種使用格式化,您可以在其中指定輸出的格式,並提供將被格式化程序替換的參數。

如果你只有一個參數,並且只使用一次,那麼這兩種方法或多或少都可以理解,並且或多或少具有相似的代碼長度。但是,假設你需要寫一些更具體的東西,比如一個人的信息以指定的格式,例如,

名姓從市(年齡),使用串聯住在 '街' #StreetNumber

(並假設你有一個person變量)它看起來像:

string info = person.FirstName + " " + person.LastName + " (" 
      + person.Age + ") from " + person.City + ", living on '" 
      + person.Street + "' #" + person.StreetNumber; 

和使用格式,它會看起來像:

string info = string.Format("{0} {1} ({2}) from {3}, living on '{4}' #{5}", 
       person.FirstName, person.LastName, person.Age, 
       person.City, person.Street, person.StreetNumber); 

在第一個示例中,結束格式非常不明顯,並且很難說您是否在某處忘記了引號或括號,而在第二種情況下,格式相對比較明顯。如果您以後需要更改格式,即如果街道名稱/號碼需要在城市之前進行,則在第一種情況下,您需要進行大量編輯,而在第二種情況下,您只需要更改格式。


C#6.0有字符串插值,這使得它更容易和更明顯地對字符串進行很好的格式化。你可以這樣寫:

string info = $"{person.FirstName} {person.LastName} ({person.Age}) from {person.City}, living on '{person.Street}' #{person.StreetNumber}"; 
2

在這一行

Console.WriteLine("Our total"+ total); 

+標誌的左側後總是會接觸完成。

在這一行

Console.WriteLine("Our total {0}", total); 

將打印它的立場是推杆。

Console.WriteLine("{0} is our total ", total); 

這會在字符串中第一次打印。

如果總爲10

輸出:

10是我們的總。

兩者都是正確的,但具有不同的印刷方式。

0

Console.WriteLine("Our total"+ total)是您的輸出的直接打印。

Console.WriteLine("Our total {0}", total)將會像string.Format("Our total {0}", total)

這兩個都是正確的,但第二個是首選,因爲它確保格式正確,更清晰,更易於閱讀/更好地維護。

1

一個非常全面的答案是on already on SO。總之:

我懷疑其他答案可以談談對性能的影響,但說實話 這將是最小的,如果存在的話 - 這級聯 版本並不需要解析的格式字符串。

從本質上講,它取決於作者,他認爲更可讀。