B. *_*non 3 c# performance stringbuilder string.format append
我一直在创建动态字符串以附加到StringBuilder,如下所示:
StringBuilder sb = new StringBuilder();
string bla = "bla";
sb.AppendLine(string.Format("android:id=\"@+id/{0}\" ", bla));
Run Code Online (Sandbox Code Playgroud)
...但后来我注意到StringBuilder有一个AppendFormat()方法,它避免了" string.Format() ".所以我想知道AppendFormat()是否也像AppendLine()那样添加换行符(而不是Append(),而不是).
IOW,达到同样的效果:
sb.AppendLine(string.Format("android:id=\"@+id/{0}\" ", bla));
Run Code Online (Sandbox Code Playgroud)
...当使用AppendFormat()时,我需要使用两行,如下所示:
sb.AppendFormat("android:id=\"@+id/{0}\" ", bla);
sb.AppendLine();
Run Code Online (Sandbox Code Playgroud)
?
答案是肯定的 - 需要两行,或者我必须在对AppendLine()的调用中恢复显式使用string.Format().
实际上,至少有一种方法可以用AppendFormat()在一行中完成,即:
sb.AppendFormat("android:id=\"@+id/{0}\" {1}", bla, Environment.NewLine);
Run Code Online (Sandbox Code Playgroud)
...但是,这可能不比AppendLine(string.Format(...)更优雅
那么以下哪一项更好(更高性能)或更安全,或者无关紧要?
sb.AppendFormat("android:id=\"@+id/{0}\" {1}", bla, Environment.NewLine);
sb.AppendLine(string.Format("android:id=\"@+id/{0}\" ", bla));
Run Code Online (Sandbox Code Playgroud)
只需创建一个调用包括您自己的扩展方法AppendLine和AppendFormat,创造您想要的方法,使用格式字符串没有明确将新行字符追加一条线的能力:
public static StringBuilder AppendLineFormat(
this StringBuilder builder,
string formatString,
params object[] args)
{
return builder.AppendFormat(formatString, args)
.AppendLine();
}
Run Code Online (Sandbox Code Playgroud)
(AppendFormat如果你愿意,可以随意为每次重载创建一个重载.)