您的位置:首页 > 产品设计 > UI/UE

[自学问题总结]StringBuilder 和 String 的区别

2013-08-05 09:08 281 查看
String在进行运算时(如赋值、拼接等)会产生一个新的实例,而 StringBuilder 则不会。所以在大量字符串拼接或频繁对某一字符串进行操作时最好使用
StringBuilder,不要使用 String

另外,对于 String我们不得不多说几句:
1.它是引用类型,在堆上分配内存
2.运算时会产生一个新的实例
3.String对象一旦生成不可改变(Immutable)
3.定义相等运算符(==和!=)是为了比较
String 对象(而不是引用)的值


示例:

using System;
using System.Collections.Generic;
using System.Text;

namespace Example22
{
class Program
{
static void Main(string[] args)
{
const int cycle = 10000;

long vTickCount = Environment.TickCount;
String str = null;
for (int i = 0; i < cycle; i++)
str += i.ToString();
Console.WriteLine("String: {0} MSEL", Environment.TickCount - vTickCount);

vTickCount = Environment.TickCount;
//看到这个变量名我就生气,奇怪为什么大家都使它呢? :)
StringBuilder sb = new StringBuilder();
for (int i = 0; i < cycle; i++)
sb.Append(i);
Console.WriteLine("StringBuilder: {0} MSEL", Environment.TickCount - vTickCount);

string tmpStr1 = "A";
string tmpStr2 = tmpStr1;
Console.WriteLine(tmpStr1);
Console.WriteLine(tmpStr2);
//注意后面的输出结果,tmpStr1的值改变并未影响到tmpStr2的值
tmpStr1 = "B";
Console.WriteLine(tmpStr1);
Console.WriteLine(tmpStr2);

Console.ReadLine();
}
}
}


结果:

String: 375 MSEL

StringBuilder: 16 MSEL

A

A

B

A
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: