程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> C# >> C#入門知識 >> 避免string.Format方法的裝箱,string.format裝箱

避免string.Format方法的裝箱,string.format裝箱

編輯:C#入門知識

避免string.Format方法的裝箱,string.format裝箱


 

我們知道,使用string.Format方法可能會存在裝箱的情況。比如如下:

 

        static void Main(string[] args)
        {
            string s = string.Format("拼接{0}和{1}", 1, 2);
            Console.WriteLine(s);
            Console.ReadKey();
        }

 

string.Format()方法接收的後兩個形參類型是object,所以這裡存在裝箱。

 

現在查看IL代碼:

 

→打開"開發人員命令提示"  


→導航到應用程序所在的文件夾


→使用ildasm查看應用程序的il代碼並輸出到txt文件



→打開1.txt文本文件



→在IL代碼中看到了2次裝箱

 

如果在我們的應用程序中多次頻繁地調用string.Format方法,比如記錄日志,那麼對值類型裝箱發生了很多次,也意味著會產生很多次的內存分配,發生很多次的垃圾回收。

 

如何解決呢?
--用字符串拼接

 

修改代碼如下:

 

        static void Main(string[] args)
        {
            string s = "拼接" + 1.ToString() + "和" + 2.ToString();
            Console.WriteLine(s);
            Console.ReadKey();
        }

 

我們看到,通過字符串拼接,避免了裝箱的發生。

  1. 上一頁:
  2. 下一頁: