【问题标题】:String builder and String Concat字符串生成器和字符串 Concat
【发布时间】:2016-05-19 02:02:49
【问题描述】:

我有一段看起来遵循这种模式的代码,

 var stringBuilder =new StringBuilder( string.Concat(" string", _variable, 
"another string" , _variable2 ... );

按照一些逻辑做

stringBuilder.Append(" Some more strings"); 

我不喜欢使用 StringBuilder 和 string.Concat 的不匹配,我想要一种更优雅的方式

我以为是这样使用 StringBuilder.Append ,

StringBuilder.Append("string");
StringBuilder.Append(_variable);
StringBuilder.Append("another string");

有没有比这种方法更好的方法?

【问题讨论】:

标签: c# stringbuilder


【解决方案1】:

实际上 StringBuilder 是 AFAIK 第一个支持流畅语法的 BCL 类,因此您可以简单地链接多个 Append / AppendLine / AppendFormat 调用:

var stringBuilder = new StringBuilder()
    .Append(" string").Append(_variable)
    .Append("another string").Append(_variable2)
    .Append(...);

【讨论】:

    【解决方案2】:

    在 C# 6 中,您可以使用字符串插值:

    var stringbuilder = new StringBuilder($"string{_variable}another string");
    

    【讨论】:

    • 或者在string.Format。
    • @KennethK。是的,但问题具体说明了不喜欢不匹配
    • 也许,但使用string.Format 至少可以将字符串文字清理为一个字符串而不是 3 个以上的字符串。
    【解决方案3】:

    StringBuilder 是进行大量字符串连接的正确方法。它是专门为此而设计的,从性能的角度来看是最佳的,所以如果你想要大量的字符串操作,请使用它。否则,如果这是一项小操作,您可以遵循 Matt Rowland 的建议(如果您有 C# 6),尽管您根本不需要 StringBuilder:

    string result = $"string {_variable} another string"
    

    如果你没有 C# 6,你可以这样做:

    string result = string.Format("string {0} another string", _variable)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-07-14
      • 1970-01-01
      • 1970-01-01
      • 2014-01-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多