String对象是不可变的,即字符串一经修改便不能更改。因此FCL提供了StringBuilder类型对字符串和字符进行高效动态处理,并返回处理好的String对象。用StringBuilder的ToString方法即可将StringBuilder的字符数组“转换”为String,这样会在堆上新建String对象,其中包含ToString时存在于StringBuilder中的字符串。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace ConsoleApp5
{
class Program
{
static void Main(string[] args)
{
//构造StringBuilder对象,代表可变字符串,即SB的大多数成员都能更改字符数组的内容,同时不会造成在
//托管堆上分配新对象
//SB分配新对象的情况:
//1:动态构造字符串,其长度超过了设置的“容量”
//2:调用SB的toString()方法
StringBuilder sb = new StringBuilder();
Console.WriteLine("SB所能容纳的最大字符数:{0}", sb.MaxCapacity);
string s = sb.AppendFormat("{0} {1}", "xu", "shuai").Replace(' ', '-').ToString();
sb.Append("fdfd");
Console.WriteLine(s);
Console.WriteLine(sb.ToString());
Console.ReadKey();
}
}
}