【发布时间】:2010-02-15 13:53:16
【问题描述】:
我想知道这段代码是否......
StringBuilder sb = new StringBuilder("Please read the following messages.");
... 使用与传递给构造函数的字符串一样大的缓冲区初始化sb。一方面,这似乎是最合乎逻辑的事情。另一方面,它似乎违背了StringBuilder 类最常见用途之一的目的,即提供可变性以使重复附加更有效。 (第一次致电Append,如果我的问题的答案是“是”,则需要sb 自行调整大小。)
再说一次,我想这类似于List<T> 的构造函数,它以IEnumerable<T> 作为参数。也许这种情况下的假设是您不打算追加很多,而是操纵已经存在的东西。
我对此做的唯一真正的研究是检查MSDN documentation on StringBuilder,它没有提供答案(它说构造函数“使用指定的字符串”初始化实例,但不表示 如何使用字符串)。
编辑:所以它是“特定于实现的”...这对其他人来说似乎不奇怪吗?我的意思是,StringBuilder 类的目的是提供一种替代方法来在 string 上执行大量操作,同时创建大量不可变的 string 实例;因此,它是为了效率。我觉得应该指定这个构造函数的行为,以便开发人员可以做出明智的决定,无论平台如何使用它。
我的意思是,它是由微软以某种方式实现的;他们可以轻松地将其放入文档中(迫使其他实现效仿)。只是个人困惑的来源......
【问题讨论】:
标签: .net constructor buffer stringbuilder