asp.net代码练习 work082 String类和StringBuilder类的区别

258 篇文章 2 订阅
本文探讨了.NET中String和StringBuilder的区别,并通过示例展示了在大量字符串连接操作时,StringBuilder的性能优势。代码示例比较了两者在连接9000次字符串时所需的时间,结果显示StringBuilder在效率上远超String。
摘要由CSDN通过智能技术生成

webform1.aspx

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="WebForm1.aspx.cs" Inherits="work082.WebForm1" %>

<!DOCTYPE html>

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
    <title>String类和StringBuilder类的区别</title>
</head>
<body>
    <form id="form1" runat="server">
    <div>
    
    </div>
    </form>
</body>
</html>

webform1.aspx.cs

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

namespace work082
{
    public partial class WebForm1 : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            //如果堆中存在字符串abd,则a=adb,否则a=null
            string a = string.IsInterned("abd");
            string b = new System.Text.StringBuilder().Append("as").Append("df").ToString();

            if (string.IsNullOrEmpty(a))
            {
                Response.Write(a + "不在拘留池中<br>");
            }
            else
            {
                Response.Write(a + "在拘留池中<br>");
            }

            if (string.IsNullOrEmpty(b))
            {
                Response.Write(b + "不在拘留池中<br>");
            }
            else
            {
                Response.Write(b + "在拘留池中");
            }

            Response.Write("<hr>");

            int count = 9000;
            TimeSpan ts1 = StringConcat(count);
            TimeSpan ts2 = StringBuilderConcat(count);
            Response.Write(string.Format("使用string来连接{0}次耗时{1}毫秒。<br>",count.ToString(),ts1.TotalMilliseconds));
            Response.Write(string.Format("使用StringBuilder来连接{0}次耗时{1}毫秒。<br>", count.ToString(), ts2.TotalMilliseconds));

        }

        /// <summary>
        /// 用String对象来连接字符串
        /// </summary>
        /// <param name="count"></param>
        /// <returns></returns>
        public static TimeSpan StringConcat(int count)
        {
            DateTime start = DateTime.Now;
            string text = string.Empty;
            for (int i = 0; i < count; i++)
            {
                text = text + "0" + i;
            }
            DateTime end = DateTime.Now;
            return end - start;
        }

        /// <summary>
        /// 用StringBuilder对象连接字符串
        /// </summary>
        /// <param name="count"></param>
        /// <returns></returns>
        public static TimeSpan StringBuilderConcat(int count)
        {
            DateTime start = DateTime.Now;
            System.Text.StringBuilder text = new System.Text.StringBuilder();
            for (int i = 0; i < count; i++)
            {
                text.Append("0" + i);
            }
            DateTime end = DateTime.Now;
            return end - start;

        }
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

虾米大王

有你的支持,我会更有动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值