c# - StringBuilder - 是否应该只使用 Append 和 AppendLine 而不在参数中组合字符串?
问题描述
我已经开始使用StringBuilder
它,因为我听说它在输出字符串时更加优化。
我的问题是关于+
as 字符串的使用是不可变的,当您将它们添加在一起时,它会分配一个新字符串。
如果我在函数的参数中使用此运算符StringBuilder.Append
,我假设它基本上具有相同的开销。
例如:
string animal1 = "dog";
string animal2 = "cat";
stringBuilder.Append("Today I saw a " + animal1 + " and " + animal2);
我的猜测是,无论如何这可以将这些文本连接在一起分配内存。
我认为更有效(尽管很冗长)的方法是:
stringBuilder.Append("Today I saw a");
stringBuilder.Append(animal1);
stringBuilder.Append(" and ");
stringBuilder.Append(animal2);
这个对吗?
解决方案
您在第二个示例中有一个错误,因为您错过了 "Today I saw a" 和animal1
. 除非您以过度的方式执行此操作(在具有多次迭代的循环中),否则您可能不会发现任何可测量的差异,因此您最好的选择可能是以可读性为目标。
$"Today I saw a {animal1} and a {animal2}"
是的,我a
也在第二只动物之前添加了一个 :) 不过我不处理“an”的案例。
AppendFormat
如果您想对所有这些附加内容不那么冗长,您还可以选择使用...
stringBuilder.AppendFormat("Today I saw a {0} and a {1}", animal1, animal2);
推荐阅读
- android - 如何在颤振中创建 JSON 对象?
- powerbi - 如何在 Power BI 中使用 DAX 将数字转换为百万?
- angular - Angular:类型的参数不可分配给..的参数,并且类型中缺少属性“id”
- javascript - 向 Web 应用程序公开本机设备 API
- c++ - 我可以得到什么字符串标记在 C++ 中转换为 int 的总和?
- windows - 如何解决 Windows 10 上 Mbed 故障转储中的代码行?
- javascript - 如何在Javascript中重写选项的文本?
- wordpress - 条件逻辑搜索和过滤插件 Wordpress
- asp.net-core-mvc - 角度 10 'oidc-client' / IdentityServer4 .netCore 3.1
- python - 如何构建 Hy lang 片段的 AST