gpt4 book ai didi

c# - AppendFormat() 或 AppendLine() 是更安全/更时尚的解决方案吗?

转载 作者:行者123 更新时间:2023-11-30 13:56:51 25 4
gpt4 key购买 nike

我一直在创建动态字符串以 append 到 StringBuilder,如下所示:

StringBuilder sb = new StringBuilder();
string bla = "bla";
sb.AppendLine(string.Format("android:id=\"@+id/{0}\" ", bla));

...但后来我注意到 StringBuilder 有一个 AppendFormat() 方法,它避免了“string.Format()”。所以我想知道 AppendFormat() 是否也像 AppendLine() 那样添加一个换行符(与 Append() 不同,后者没有)。

IOW,实现与以下相同的效果:

sb.AppendLine(string.Format("android:id=\"@+id/{0}\" ", bla));

...当使用 AppendFormat() 时,我是否需要使用两行,如下所示:

sb.AppendFormat("android:id=\"@+id/{0}\" ", bla);
sb.AppendLine();

?

答案是肯定的 - 需要两行,否则我必须恢复为在对 AppendLine() 的调用中显式使用 string.Format()。

实际上,至少有一种方法可以使用 AppendFormat() 在一行中完成,即:

sb.AppendFormat("android:id=\"@+id/{0}\" {1}", bla, Environment.NewLine);

...但这可以说并不比 AppendLine(string.Format(...

那么以下哪个更好(性能更高)或更安全,或者无关紧要?

sb.AppendFormat("android:id=\"@+id/{0}\" {1}", bla, Environment.NewLine);
sb.AppendLine(string.Format("android:id=\"@+id/{0}\" ", bla));

最佳答案

只需创建您自己的同时调用 AppendLineAppendFormat 的扩展方法,即可创建您想要的方法,无需显式使用格式字符串追加一行的能力添加换行符:

public static StringBuilder AppendLineFormat(
this StringBuilder builder,
string formatString,
params object[] args)
{
return builder.AppendFormat(formatString, args)
.AppendLine();
}

(如果您愿意,请随意为 AppendFormat 的每个重载创建一个重载。)

关于c# - AppendFormat() 或 AppendLine() 是更安全/更时尚的解决方案吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24087937/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com