看範例學C#-04 善用StringBuilder與StringWriter

  • 17373
  • 0
  • C#
  • 2011-10-01

看範例學C#-04

動態字串改用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());
        }
    }
}



ex04.rar

 


如有錯誤 歡迎指正