14

我有一个需要参数的方法。在方法内部,应将另一个变量添加到输出中:

private void ParamsTest(params object[] objs)
{
  var foo = "hello";
  // Invalid: Interpretes objs as single array parameter:
  Console.WriteLine("{0}, {1}, {2}", foo, objs);
}

当我打电话

ParamsTest("Hi", "Ho");

我想看看输出。

hello Hi Ho

我需要做什么?

我可以复制fooobjs进入一个新数组并将该数组传递给,WriteLine但是有没有更优雅的方式来强制objs再次充当参数?种objs.ToParams()

4

4 回答 4

10

如果您的问题只是向数组添加另一个元素,您可以使用 List

List<object> list = new List<object> { "hello" };
list.AddRange(objs);
Console.WriteLine("{0}, {1}, {2}, ...", list.ToArray());

params不是数据类型。参数数据类型仍然是一个普通数组。

于 2012-11-07T10:56:08.117 回答
6

我会string.Join用来做格式化:

Console.WriteLine("{0}, {1}", foo, string.Join(", ", objs));
于 2012-11-07T10:59:04.660 回答
1

您可以像这样使用 foreach 循环

string objsString = string.Empty;
foreach (var ob in objs)
    objsString += ", " + ob.ToString();
Console.WriteLine("{0}{1}", foo, objsString);

或者还有更好的方法:

string paramsString = string.Join(", ", objs);
Console.WriteLine("{0}, {1}", foo, paramsString );
于 2012-11-07T10:54:53.040 回答
0

循环遍历params数组

var foo = "hello";
Console.Write(foo);
objs.ForEach(obj => Console.Write(", {0}", obj.ToString()));
Console.WriteLine();

或用于String.Join()创建数组的字符串表示。

var foo = "hello";
string output = String.Join(", ", objs);
Console.WriteLine("{0}, {1}", foo, output);
于 2012-11-07T10:55:41.553 回答