動態字串改用StringBuilder來提升效率
固定的字串用String效率較好
動態的字串就用Stringbuilder 效率較好
因為string 用+ 來串連字串,因為每次都要重新配置記憶體
所以動態字串使用string效率較差
String 或 StringBuilder 物件之串連作業的效能是根據記憶體的配置頻率而定。
String 串連作業永遠都會配置記憶體,而 StringBuilder 串連作業只有在
StringBuilder 物件緩衝區太小而無法容納新資料時,才會配置記憶體。
因此,如果要串連固定數目的 String 物件,最好使用 String 類別的串連作業。
在這種情況下,編譯器 (Compiler) 甚至可能將個別的串連作業結合成一個單一作業。
如果要串連任意數目的字串 (例如,如果迴圈串連任意數目的使用者輸入字串),
則對於串連作業來說最好使用 StringBuilder 物件。
StringBuilder 方法參閱MSDN
兩篇 String與Stringbuilder組字串的效能比較
http://www.dotblogs.com.tw/jeff-yeh/archive/2008/11/04/5870.aspx
http://blog.xuite.net/alwaysfuturevision/liminzhang/9570271
因為StringWriter類別有很多方法可以使用,所以要加文字 或換行
使用起來就會比string 方便
StringWriter 方法參閱MSDN
以下為程式碼及註解
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Windows.Forms;
using System.Diagnostics;
using System.IO;
using System.Text;
namespace ex04
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
string engWord = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
StringBuilder sb = new StringBuilder(engWord);//using System.Text;
StringWriter strWriter = new StringWriter();//using System.IO;
strWriter.Write("sb長度");//用Write寫入不換行,WriteLine寫入才會直接換行
strWriter.WriteLine(string.Format( "{0}",sb.Length));//格式化字串的用法
strWriter.WriteLine("{0}", sb.Length);//同上一行,省略掉string.Format()
strWriter.WriteLine("sb最大容量{0}",sb.MaxCapacity);
sb.AppendLine();//加上換行字元,同等於"\n"
sb.Append("12345");//append寫入不換行
sb.Append("67890");//append寫入不換行
MessageBox.Show(strWriter.ToString()+sb.ToString());
}
}
}