string.Format這個方法,有寫過C#的人應該都很熟悉。但string.Format如果在很多參數時,常常程式碼要分個兩三行才會比較好閱讀,但程式碼看起來就會有點雜亂。
例子
C# 6.0針對string.Formt提供了新的表示方式,直接看下面的例子。
string message = string.Format("歡迎 {0},現在日期 {1:yyyy/MM/dd}"
, Name
, DateTime.Now);
上面就是之前常見的用法,C# 6.0的新表示方法是
string message = $"歡迎 {Name},現在日期 {DateTime.Now:yyyy/MM/dd}";
相較之下,是不是簡潔多了,程式碼長度縮短了三分之一左右!
使用規定
C# 6.0的新表示方法有幾點要注意的地方:
- 以「錢字號 ($)」開頭
- 將原先的號碼直接用變數取代
- 變數後方還是可以格式化呈現方式,如:小數點位數,時間格式化字串
結語
最讓我有感的就是搭配log4net的使用。以log4net的紀錄錯誤的方法有兩個,一個是Error,另一個是ErrorFormat。如下表示
try
{
DoSomething();
}
catch (Exception e)
{
//Error可紀錄Exception物件,但不能格式化
_log.Error("儲存失敗", e);
//ErrorFormat可以格式化,但不能紀錄Exception物件
_log.ErrorFormat("儲存{0}失敗", _storePath);
//兩全其美的方法,但程式碼很雜亂
_log.Error(string.Format("儲存{0}失敗", _storePath), e);
//兩全其美的方法,相對程式碼比較簡潔
_log.Error($"儲存{_storePath}失敗", e);
}