有人可以解釋這兩個代碼的區別。打印變量到控制檯
Console.WriteLine("Our total"+ total);
和
Console.WriteLine("Our total {0}", total);
哪些代碼或多或少正確比其他?
有人可以解釋這兩個代碼的區別。打印變量到控制檯
Console.WriteLine("Our total"+ total);
和
Console.WriteLine("Our total {0}", total);
哪些代碼或多或少正確比其他?
兩種變體都是正確的,在這種情況下實際上是等效的。 一個使用字符串連接,你把所有需要的字符串,只是+
他們在一起。
另一種使用格式化,您可以在其中指定輸出的格式,並提供將被格式化程序替換的參數。
如果你只有一個參數,並且只使用一次,那麼這兩種方法或多或少都可以理解,並且或多或少具有相似的代碼長度。但是,假設你需要寫一些更具體的東西,比如一個人的信息以指定的格式,例如,
名姓從市(年齡),使用串聯住在 '街' #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}";
在這一行
Console.WriteLine("Our total"+ total);
+
標誌的左側後總是會接觸完成。
在這一行
Console.WriteLine("Our total {0}", total);
將打印它的立場是推杆。
像
Console.WriteLine("{0} is our total ", total);
這會在字符串中第一次打印。
如果總爲10
輸出:
10是我們的總。
兩者都是正確的,但具有不同的印刷方式。
Console.WriteLine("Our total"+ total)
是您的輸出的直接打印。
Console.WriteLine("Our total {0}", total)
將會像string.Format("Our total {0}", total)
。
這兩個都是正確的,但第二個是首選,因爲它確保格式正確,更清晰,更易於閱讀/更好地維護。
一個非常全面的答案是on already on SO。總之:
我懷疑其他答案可以談談對性能的影響,但說實話 這將是最小的,如果存在的話 - 這級聯 版本並不需要解析的格式字符串。
從本質上講,它取決於作者,他認爲更可讀。
後者應是'Console.WriteLine(的String.Format( 「我們的總{0}」,總計));' – Irshad
兩種方式都是正確的 –
@Irshad,不正確的,這兩種工作就好了 – wjvander