3

我想知道两者之间的区别(如果有的话):

StringBuilder sb = new StringBuilder(); 
sb.Append("xxx");
sb.Append("yyy");
sb.Append("zzz");

和 :

StringBuilder sb = new StringBuilder(); 
sb.Append("xxx")
  .Append("yyy")
  .Append("zzz");
4

4 回答 4

11

没有区别,后一种情况称为“Fluent Syntax”。

于 2009-12-28T14:34:36.923 回答
1

没有功能上的区别。在您的第一种情况下,您StringBuilder在三个语句中以相同的顺序将字符串附加到相同的位置。在第二种情况下,您StringBuilder在一个语句中将相同的字符串附加到相同的字符串。

不会有显着的性能差异,也绝对没有可观察到的差异。您可以从风格上选择其中一种。

于 2009-12-28T14:37:26.827 回答
1

IL 肯定会在两者之间看起来不同,并且从第一眼看,链接版本可能会快几纳秒(我只是喜欢说纳秒。),但没有什么可以考虑重构你的代码。如果它看起来更干净,我会走那条路。

它总是困扰着我,怎么StringBuilder.Append总是会自己回来。它使人们认为 StringBuilder 是一种不可变的结构,而事实并非如此。这在 F# 中也特别烦人,您必须明确忽略它返回的内容。但是该怎么办?

于 2009-12-28T14:42:21.793 回答
0

它们之间没有区别。但是您可以使用第二个来减少代码行:)

于 2009-12-28T14:36:04.300 回答