2017-04-20 42 views
3

我是C#的初學者。到目前爲止,我遇到了幾種可用於將變量嵌入到字符串值中的方法。其中之一是在C#6.0中引入的字符串插值。以下代碼是字符串插值的示例。c# - 字符串插值

int number = 5; 
string myString = $"The number is {number}"; 

我想知道的是在以下方式中使用字符串插值是否有利於格式化字符串。

// first way 
int number = 5; 
string myString = "The number is " + number; 

//second way 
int number = 5; 
string myString = string.Format("The number is {0}", number); 
+0

@KQa - 我會不同意。 OP知道如何進行字符串插值,他們更關心引擎蓋下發生了什麼,而您提到的問題是如何插入字符串。 – ridecar2

回答

4

您所顯示的第一種方法將在內存中創建多個字符串。從內存中,我認爲它會創建number.ToString()字符串字面"The number is "字符串,然後用名稱myString

字符串對於您展示它是非常簡單的第二種方式:字符串插值編譯爲您所使用的string.Format()方法調用。

編輯:第二種方法和插值也將支持格式說明符。

通過Jon Skeet更詳細的討論可以在這裏找到:http://freecontent.manning.com/interpolated-string-literals-in-c/

+0

我想'string.Format'也調用'int'上的'ToString()':https://referencesource.microsoft.com/#mscorlib/system/text/stringbuilder.cs,1466 – Orphid

+1

謝謝你的解釋 – gayashanbc

+0

@Orphid - 我同意這一點,其實我很確定它必須這樣做。我記得,它沒有做的是允許格式化,應該添加到我的答案。 – ridecar2