【C# 6.0】字串插補(更容易插入變數)

介紹C# 6.0新功能-「字串插補」(string interpolation)介紹,將會敘述如何使用這方變得的語法糖。
C# 6.0發表時間:2015年7月,始於.NET Framework 4.6,Visual Studio 2015。

這個新語法是讓字串插入某些「特定字」或是格式更加方便。可以視為String.Format的變形,比String.Format讓我們更容易顯示及使用的字串格式。

以下會用展示「指定變數位置」和「指定字串格式」

 

首先是原本的String.Format

Console.WriteLine(String.Format("At {0}, the temperature is {1}°C.", DateTime.Now, 20.4));

他會顯示:At 07/06/2019 13:19:52, the temperature is 20.4°C.

{0}的位置變成07/06/2019 13:19:52(這個會根據主機的語言特性而改變,本範例是使用微軟的網頁模擬器)的文字顯示,而{1}則是顯示20.4

如果是使用$這特殊字元,則會變成:

Console.WriteLine($"At {DateTime.Now}, the temperature is {20.4}°C.");

結果也是顯示相同的:At 07/06/2019 13:19:52, the temperature is 20.4°C.
可以看得出來,差別是把前面的String.Format改成$,並且把後面要顯示的參數「DateTime.Now」和「20.4」,放入本來指定要插入String.Format的第0個和第1個的位置,也就是把參數放在String.Format的第一個參數中,變成只有一個參數而已。這樣是不是變得更容易寫,不用打太多字,而且不用前後移動,去比對參數位置,不用擔心多一個少一個或算錯位置,顯示結果就天差地遠了!

 

這個是讓我們可以把字串使用指定的格式呈現,例如String.Format使用double的指定小數位數:

double pi = 3.14159;

Console.WriteLine(String.Format("PI is=[{0}]",pi));
Console.WriteLine(String.Format("PI is=[{0:F2}]",pi));

而同樣的,可以使「$」這個特殊字元,達到與String.Format相同的效果:

double pi = 3.14159;

Console.WriteLine($"PI is=[{pi}]");
Console.WriteLine($"PI is=[{pi:F2}]");

顯示出的結果都會是:

PI is=[3.14159]
PI is=[3.14]

 

如果要使用「$」特殊字元,有幾點要特別注意:

  • 使用此語法時,$""中間不能有空白,不然編譯會發生問題。
  • 而要顯示「{}」要使用雙大括號,也就是要輸入「{{」和「}}」才把正常顯示出來「{」和「}」。例如:Console.WriteLine($"PI is={{pi}}");,就會顯示:PI is={pi}
  • 當大括號({})內有「""」,記得此變數要使用「()」包起來,像是:Console.WriteLine($"PI is=[{(pi.ToString().Length > 2 ? 3 : pi)}]");,就會顯示PI is=[3]

 

更多說明在:

~Copyright by Eyelash500~

技術文章:EY*研究院
iT邦幫忙:eyelash*睫毛
Blog:睫毛*Relax
Facebook:睫毛*Relax