我的静态方法像这样返回以下串联的字符串

return (Sb.ToString() + " " + ds.Tables[1].Rows[0].ItemArray[0].ToString() + " " + ds.Tables[2].Rows[0].ItemArray[0].ToString());

这是一个好/不好的做法还是我应该使用stringbuilder ...

最佳答案

一次字符串连接比使用StringBuilder更快-尽管如果Sb已经是StringBuilder,则可以附加一个字符串(假设它是局部变量)。假设这实际上是来自数据库的数据,则获取数据所需的时间将大大超过此处的字符串连接。

请注意,您不需要所有这些对ToString()的调用-这样做也一样:

return (Sb + " " + ds.Tables[1].Rows[0].ItemArray[0] + " " +
        ds.Tables[2].Rows[0].ItemArray[0]);


这是使用现有构建器的等效项:

return Sb.Append(" ")
         .Append(ds.Tables[1].Rows[0].ItemArray[0])
         .Append(" ")
         .Append(ds.Tables[2].Rows[0].ItemArray[0])
         .ToString();


这可能会更快一些-这取决于各种因素。我个人可能还是会使用串联版本,因为它是IMO较简单的版本。我非常怀疑您会发现性能差异很大。请注意,这有点特殊,因为您已经有了StringBuilder;在连接一组可以在一个编译时表达式中全部指定它们的项目的一般情况下,由于单个方法调用可以提供所有必需的信息,因此连接可以更快。

如果您需要更多详细信息和指南,我有一个page on StringBuilder vs string concatenation

关于c# - 就性能而言,此C#返回语句是好是坏?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/2543425/

10-13 06:06