1

这个相当不优雅的方法接受一个输入的对象数组并输出一个字符串结果,这是每个元素的 ToString() 的结果,空格分隔。

string Format(object[] args)
{
   var res = string.Empty;
   foreach (var o in args)
   {
      res += o.ToString();
      if (o != args.Last())
         res += " ";
   }
}

肯定有隐藏在某处的 C# 方法来执行此类操作,或者如果没有,使用 Linq 编写它的更优雅的方式?我如何编写此方法的另一个问题是通过增量构建字符串来生成垃圾。

4

3 回答 3

12
var res = String.Join(" ", args);
于 2013-07-25T20:44:17.027 回答
3
var res = String.Join(" ", args.Select(x=> x != null ? x.ToString() : ""));

将每个项目的字符串表示形式连接在一起。

于 2013-07-25T20:46:39.617 回答
1

您可以使用我倾向于使用的聚合方法。

args.Where(x => x != null).Aggregate((c, n) => c.ToString() + " " + n.ToString());
于 2013-07-25T20:48:10.377 回答