在.NET
2.0中,它在
String内部使用该类。
String仅在
System名称空间之外是不可变的,因此
StringBuilder可以做到这一点。
在.NET 4.0中
String已更改为使用
char[]。
在2.0中
StringBuilder看起来像这样
public sealed class StringBuilder : ISerializable{ // Fields private const string CapacityField = "Capacity"; internal const int DefaultCapacity = 0x10; internal IntPtr m_currentThread; internal int m_MaxCapacity; internal volatile string m_StringValue; // HERE ---------------------- private const string MaxCapacityField = "m_MaxCapacity"; private const string StringValueField = "m_StringValue"; private const string ThreadIDField = "m_currentThread";但是在4.0中,它看起来像这样:
public sealed class StringBuilder : ISerializable{ // Fields private const string CapacityField = "Capacity"; internal const int DefaultCapacity = 0x10; internal char[] m_ChunkChars; // HERE -------------------------------- internal int m_ChunkLength; internal int m_ChunkOffset; internal StringBuilder m_ChunkPrevious; internal int m_MaxCapacity; private const string MaxCapacityField = "m_MaxCapacity"; internal const int MaxChunkSize = 0x1f40; private const string StringValueField = "m_StringValue"; private const string ThreadIDField = "m_currentThread";因此,显然将其从使用a更改
string为使用a
char[]。
编辑:更新了答案以反映.NET 4(我才刚刚发现)中的更改。



