- 沒有新回應!
◆String 物件,代表的是一種不變的字串,一旦您設定其值,就不能更改它。
如果你要更改字串的任何一部份,唯一的方式就是去建立一個新的字串。
例如:
string a="1111";
a+="2222";
假設第一次a分配了4Bit (if)
而在a+="2222" 則會在開1個8bit的空間把"11112222"存入,而存"1111"的空間會在記憶體回收時刪除。
◆System.Text.StringBuilder 中的Append,是在原有基礎上再分配空間。
詳細內容可參考:http://blog.xuite.net/alwaysfuturevision/liminzhang/9570271
◆程式測試 (隨著執行的迴圈愈大,2者的執行效能差異更大~)
DateTime startTime,endTime;
String tempstr = "abcdefghijklmnopqrstuvwxyz中文字也加上去~";
int times = 5000; //迴圈次數
lb_msg.Text +=" string測試開始<br>";
startTime=System.DateTime.Now;
String str = "";
for (int i = 0; i < times; i++)
{
str += tempstr;
}
endTime = DateTime.Now;
TimeSpan ts = endTime-startTime;
int diff_Milliseconds =ts.Milliseconds ;//取毫秒
lb_msg.Text +=" 執行時間【 " + startTime + " ~ " + endTime + " 】︰" + diff_Milliseconds.ToString () +"毫秒<br>";
//..................................................
lb_msg.Text +="<br><br>";
lb_msg.Text +="StringBuilder測試開始<br>";
startTime=System.DateTime.Now;
System.Text.StringBuilder StringBuilder;
StringBuilder = new System.Text.StringBuilder();
for (int i = 0; i < times; i++)
{
StringBuilder.Append(tempstr);
}
endTime = DateTime.Now;
ts = endTime-startTime;
diff_Milliseconds =ts.Milliseconds ;//取毫秒
lb_msg.Text +=" 執行時間【 " + startTime + " ~ " + endTime + " 】︰" + diff_Milliseconds.ToString () +"毫秒<br>";


