c# - 使用字符数组列表执行多个字符串连接是否更快?

标签 c# c#-3.0 .net-micro-framework

我正在使用 .Net 微框架,因此 StringBuilder 不可用。

我看到一些来自 apt 专业人士的代码使用字符数组列表来连接和构建字符串,而不是 + 运算符。他们实质上构建了一个托管代码 StringBuilder。

这样做有性能优势吗?假设连接数大于10,字符串长度也大于10。

最佳答案

不,不要使用 char 值的 ArrayList。这将装箱每个字符 - 性能将是可怕的,内存使用也是如此。 (每个字符的引用大小 + 盒装字符的大小......好吧!)

在内部使用 char[] 并在需要时“调整”它的大小(创建一个新数组并复制内容),也许每次都将大小加倍。 (编辑:您不会将它的大小调整到您需要的确切大小 - 您会从 16 个字符开始并不断加倍 - 所以大多数 Append 操作不会 需要“调整”数组的大小。)

无论如何,这与 StringBuilder 的工作方式类似。 (它更接近于 Java 的 StringBuilder 的工作方式。)

我建议您使用最重要的成员实际构建您自己的 StringBuilder 类型。对其进行单元测试,并在适当的地方进行分析。

如果你想要一个简短的例子,请告诉我。

关于c# - 使用字符数组列表执行多个字符串连接是否更快?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1750811/

相关文章:

c# - 如何使用微框架正确更改静态 IP 地址?

c# - 两个列表相交会产生空列表

c# - C# 中的嵌套正则表达式替换

c# - NUnit TestCase - 作为属性参数的数组不符合 CLS

c# - C# (.NET) 中的范围变量是否可行

c#-3.0 - C#-从字符串数组向文件写入文本的最佳方式是什么

c# - 如何取消异步调用?

c# - 无法将类型 'int' 隐式转换为 'ushort' : already explicity cast

c# - 一段时间后串行端口访问被拒绝

c# - 忙碌指示灯不工作