iT邦幫忙

DAY 4
4

看範例學C#系列 第 4

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

  • 分享至 

  • xImage
  •  

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

本系列文章列表


上一篇
看範例學C#-03 while語法教學
下一篇
看範例學C# Hold住第五天-例外處理機制try catch
系列文
看範例學C#30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

1 則留言

0
krarm
iT邦好手 1 級 ‧ 2011-10-01 01:25:12

好文章

我要留言

立即登入留言