精選文章

網站搬遷

 Hello all, 許久沒有寫部落格的習慣,未來會持續地在  https://alanzhan.dev/  更新

[C#] Effective - 04 以內插字串取代 String.Format()

在C# 6.0 之前,如果需要組合字串時,需要呼叫String.Format方法。
然而在C#6.0出現了一種新的組合字串方式

interpolated String 如果沒看過的人可以點左側的超連結看看!

C# 6.0 的新寫法較傳統的String.Format比幾項優點!
  1. String.Format不易在編譯時期找到錯誤,而interpolated Strings 更能清楚的表達,從中使開發者更能發現出錯誤!

    你只需要在 "" 前方加上"$"前墜,然後"{}"之間,放入C#的表達式,如此一來便可大幅提升程式可讀性!
    不過你必須小心地使用表達式,你不能使用流程控制陳述語句(if/else or while)作為替換字串。
  2. interpolated Strings 可以簡化 ToString多載,讓程式碼更佳的簡潔。
  3. interpolated String 可以增加撰寫彈性,不過需要注意的是冒號(:)、引號('')或者(,),C# 編譯器會找到它,並且認為它是格式化字串的開頭,造成無法編譯的問題。像是三元運算式的使用就會出現無法編譯之問題,為了防止這個問題發生,會使用括號來分隔運算式,以防止無法編譯。

    不過 interpolated String 還是有一點點缺陷,如果包含三元運算式,就無法簡化ToString多載。
這些範例顯示內插功能的強大,比傳統的字串格式化更佳的方便。但是要記得字串內插的結果最終還是字串,所有值都會被替換,最終還是會得到一個字串。

但是要非常小心字串內插,並不會建構參數化的SQL查詢,它建構的是引用參數值的字串物件,所以使用字串內插建構SQL命令非常危險!

總結

  1. interpolated Strings 並不能組合參數化的SQL命令式,在使用上必須格外注意與小心。
  2. 在撰寫程式碼時,盡可能的使用 interpolated Strings增加程式的可讀性、正確性。
  3. 如果包含三元判斷式時,就無法簡化ToString多載。
  4. 如果你還停留在C#5.0的話,趕快將C#升上6.0以上吧,不然將錯過這個好功能!

String Value1 = "Hello", Value2 = "World";
$"{Value1} {Value2}";

留言

這個網誌中的熱門文章