我知道在处理频繁修改字符串值的代码时,使用StringBuilder比普通字符串更高效。虽然字符串看起来像值类型,但它们实际上是引用类型,这使得它们是不可变的,所以每次我们改变它时,需要在内存中创建一个新的引用。
我的问题是,为什么.NET不默认使用StringBuilder呢?肯定有一些缺点,否则就没有必要只使用String了。有人能告诉我它们是什么吗?
我唯一能想到的是,可能StringBuilder是一个更重的对象,并且需要更长的时间来实例化,所以如果你不会太多地改变字符串,那么这将覆盖使用StringBuilder的好处。
我的问题是,为什么.NET不默认使用StringBuilder呢?肯定有一些缺点,否则就没有必要只使用String了。有人能告诉我它们是什么吗?
我唯一能想到的是,可能StringBuilder是一个更重的对象,并且需要更长的时间来实例化,所以如果你不会太多地改变字符串,那么这将覆盖使用StringBuilder的好处。
String
不可变的主要设计决策。 - Diego SevillaStringBuilder
呢?注意它的名字!:) 它只是用来构建字符串的... - Diego SevillaStringBuilder
用作“优化”的List<string>
或string
。但正如Vincent所说,这行不通 :) - Merlyn Morgan-Graham