我正在使用 .Net 微框架,因此 StringBuilder 不可用。
我看到一些来自 apt 专业人士的代码使用字符数组列表来连接和构建字符串,而不是 + 运算符。他们实质上构建了一个托管代码 StringBuilder。
这样做有性能优势吗?假设连接数大于10,字符串长度也大于10。
最佳答案
不,不要使用 char
值的 ArrayList
。这将装箱每个字符 - 性能将是可怕的,内存使用也是如此。 (每个字符的引用大小 + 盒装字符的大小......好吧!)
在内部使用 char[]
并在需要时“调整”它的大小(创建一个新数组并复制内容),也许每次都将大小加倍。 (编辑:您不会将它的大小调整到您需要的确切大小 - 您会从 16 个字符开始并不断加倍 - 所以大多数 Append
操作不会 需要“调整”数组的大小。)
无论如何,这与 StringBuilder
的工作方式类似。 (它更接近于 Java 的 StringBuilder
的工作方式。)
我建议您使用最重要的成员实际构建您自己的 StringBuilder
类型。对其进行单元测试,并在适当的地方进行分析。
如果你想要一个简短的例子,请告诉我。
关于c# - 使用字符数组列表执行多个字符串连接是否更快?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1750811/