1. 程式人生 > 其它 >C# 字串和數字拼接

C# 字串和數字拼接

技術標籤:c#字串

下面兩種拼接方式 哪種效率高?日常開發中 你常用的又是哪種呢?

 string str1 = "str1" + 9;
 string str2 = "str2" + 9.ToString();

我們先看第一行程式碼的IL程式碼 我直接截圖

可以看出 第一行程式碼的"str1" + 9在執行是 會完成一次裝箱行為(IL程式碼中的box)

我們再看第二行程式碼的IL程式碼

而第二行程式碼種的9.Tostring() 並沒有發生裝箱行為 它實際呼叫的是整型的ToString()方法 ToString()的原型為

public override string ToString()
{
   return Number.FormatInt32(this, (string) null, NumberFormatInfo.CurrentInfo);
}

Number.FormatInt32() 方法是一個非託管的方法 它是直接操作記憶體從int到string的轉換 效率比裝箱要高很多。

所以 在使用其他值型別到字串的轉換並完成拼接時 應避免使用"+"來完成 而要使用值型別提供的ToString()方法來完成

文章來自《編寫高質量程式碼改善C#程式的157個建議》