String和StringBuilder的区别?

1、String类是一种传统的修改字符串的方式,它确实可以完成把一个字符串添加到另一个字符串上的工作没错。但是在.NET框架下,这个操作实在是划不来。

因为系统先是把两个字符串写入内存,接着删除原来的String对象,然后创建一个String对象,并读取内存中的数据赋给该对象。这一来二去的,耗了不少时间。

2、而使用System.Text命名空间下面的StringBuilder类就不是这样了,它提供的Append方法,能够在已有对象的原地进行字符串的修改,简单而且直接。

当然,一般情况下你是觉察不出这二者效率的差异的,但如果你要对某个字符串进行大量的添加操作,那么用StringBuilder类所耗费的时间和String类简直不是一个数量级的

一下测试代码:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Text;

namespace HandlerHelper.xiti
{
    public partial class StringBuilderString : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            divshow.InnerHtml = getHtml();
        }

        public string getHtml()
        {
            string html="";
            DateTime startTime;
            DateTime endTime;
            StringBuilder strBuilder = new StringBuilder();
            String str = String.Empty;

            html += "<ul>";
            startTime = DateTime.Now;
            html += "<li>string:<li>";
            html += "<li>开始时间:" + startTime.ToString() + "<li>";
            for (int i = 0; i < 9999; i++)
            {
                str += i.ToString();
            }
            endTime = DateTime.Now;
            html += "<li>结束时间:" + endTime.ToString() + "<li>";
            html += "<li>StringBuilder:<li>";
            html += "<li>耗时" + (endTime - startTime).ToString() + "</li>";
            html += "<li>-------------------------------------------------------</li>";
            startTime = DateTime.Now;
            html += "<li>开始时间:" + startTime.ToString() + "<li>";
            for (int i = 0; i < 9999; i++)
            {
                strBuilder.Append(i.ToString());
            }
            endTime = DateTime.Now;
            html += "<li>结束时间:" + endTime.ToString() + "<li>";
            //html += "<li>使用StringBuilder字符串:" + strBuilder.ToString() + "<li>";
            html += "<li>耗时" + (endTime - startTime).ToString() + "</li>";


            html += "</ul>";

            return html;
        }
    }
}


页面显示结果:

  • string:
  • 开始时间:2013-7-23 15:52:57
  • 结束时间:2013-7-23 15:52:58
  • StringBuilder:
  • 耗时00:00:00.8140466
  • -------------------------------------------------------
  • 开始时间:2013-7-23 15:52:58
  • 结束时间:2013-7-23 15:52:58
  • 耗时00:00:00.0020001

 

posted @ 2013-07-23 15:54  loklook123  阅读(214)  评论(0编辑  收藏  举报