在C#getter中使用StringBuilder会特别糟糕吗?

cap*_*apn 0 c# getter stringbuilder

getter将获得有关它所在的struct的状态的消息,它由struct的属性的组合定义,这些属性是有限的.

首先,这不是关于微优化,我只是认为:

StringBuilder msg = new StringBuilder();
...
msg.AppendLine("static string");
...
Run Code Online (Sandbox Code Playgroud)

看起来更清洁:

String msg = String.Empty;
...
msg = String.Concat(msg, "static string", System.Environment.NewLine)
...
Run Code Online (Sandbox Code Playgroud)

所以只是一种美学选择.

msg变量必须以任何方式初始化为空,因此额外的行不会给我带来麻烦.但是在返回字符串的字段中构造一个新的StringBuilder有多糟糕?

编辑 我只是想知道,如果把一个StringBuilder构造函数的吸气剂要开拓蠕虫的一个巨大的罐头,是荒谬的开销,一些从来没有在干将样的反模式的东西使用构造函数,等等......不知道大家是最喜欢连接非循环字符串的最佳方式.

EDIT2 getter的常用,最佳实践,性能阈值是什么,StringBuilder构造函数是否低于此值?

Mar*_*ers 5

为什么不这样做?

msg + "static string" + Environment.NewLine
Run Code Online (Sandbox Code Playgroud)

它将编译为与第二个示例相同的内容.

更新

您更改了代码,以便您想要创建包含大量行的非常大的字符串.

然后我想这很好用StringBuilder,但我建议你把它作为一种方法(如何覆盖ToString?)而不是属性,以便调用者不太可能认为调用便宜.