最近有一个疑惑是关于 String 与 StringBuilder 的

Johan.
博客专家认证
2012-12-07 07:11:41
用 StringBuilder 的同时
又用加String结束来结束。


这样做的原因主要是让代码看起来短点,囧。。。

例如:


public String ReturnStr(IList<Model> list)
{
StringBuilder sb = new StringBuilder();

sb.Append("[");

foreach (var model in list)
{
sb.Append(model.Name);
}

return sb + "]";
}


我的疑惑是,最后的 sb + "]" 和 ToString()
比起来,谁更划算呢?

...全文
257 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
Johan. 2012-12-11
  • 打赏
  • 举报
回复
引用 2 楼 hjywyj 的回复:
这个无所谓吧, 让代码看起来短点? 给你来个更短的 public String ReturnStr(IList<Model> list) { return "[" + string.Join("", list.Select(t => t.Name).ToArray()) + "]"; } ……
这个里面如果有集子也可以?
啊兵 2012-12-10
  • 打赏
  • 举报
回复
引用 1 楼 dalmeeme 的回复:
return sb + "]"是运算符+重载,会调用string.Concat(object,object); 个人感觉:sb.Append("]");return sb.ToString();在sb里东西比较多的情况下,可能效率稍高些。
xuan.ye 2012-12-10
  • 打赏
  • 举报
回复
引用 6 楼 S2T11Enterprise 的回复:
其实只是想知道谁的性能更高, 所以才有了上面一问,经验太少。 还没有看过多少.NET 的底层代码。 学习中。
前后加个时间,相减就差不多是性能了
Johan. 2012-12-10
  • 打赏
  • 举报
回复
其实只是想知道谁的性能更高, 所以才有了上面一问,经验太少。 还没有看过多少.NET 的底层代码。 学习中。
  • 打赏
  • 举报
回复
如果你多看点深度的.net framework代码,也许会有新的发现:
[__DynamicallyInvokable]
public static string Concat(params object[] args)
{
    if (args == null)
    {
        throw new ArgumentNullException("args");
    }
    string[] values = new string[args.Length];
    int totalLength = 0;
    for (int i = 0; i < args.Length; i++)
    {
        object obj2 = args[i];
        values[i] = (obj2 == null) ? Empty : obj2.ToString();
        if (values[i] == null)
        {
            values[i] = Empty;
        }
        totalLength += values[i].Length;
        if (totalLength < 0)
        {
            throw new OutOfMemoryException();
        }
    }
    return ConcatArray(values, totalLength);
}
你觉得运行这个“劳什子”的代码,跟一个简单得 ToString() 相比,哪一个更有意义? 许多时候,“太专业”是一个贬义词!
Johan. 2012-12-08
  • 打赏
  • 举报
回复
以上的代码只是一个例子。 dalmeeme的说法真专业
吉普赛的歌 2012-12-07
  • 打赏
  • 举报
回复
引用 2 楼 hjywyj 的回复:
这个无所谓吧, 让代码看起来短点? 给你来个更短的 public String ReturnStr(IList<Model> list) { return "[" + string.Join("", list.Select(t => t.Name).ToArray()) + "]"; } ……
  • 打赏
  • 举报
回复
这个无所谓吧, 让代码看起来短点? 给你来个更短的 public String ReturnStr(IList<Model> list) { return "[" + string.Join("", list.Select(t => t.Name).ToArray()) + "]"; }
dalmeeme 2012-12-07
  • 打赏
  • 举报
回复
return sb + "]"是运算符+重载,会调用string.Concat(object,object); 个人感觉:sb.Append("]");return sb.ToString();在sb里东西比较多的情况下,可能效率稍高些。

62,052

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧