C#:将数组转换为在带有附加参数的参数中使用

AHa*_*var 14 c# arrays params

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

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

我打电话的时候

ParamsTest("Hi", "Ho");
Run Code Online (Sandbox Code Playgroud)

我想看看输出.

hello Hi Ho
Run Code Online (Sandbox Code Playgroud)

我需要做什么?

我可以复制fooobjs进入一个新的数组并传递该数组,WriteLine但是有更优雅的方式强制objs再次表现为params吗?那种objs.ToParams()

Jan*_*Jan 10

如果您的问题只是向阵列中添加另一个元素,则可以使用List

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

params不是数据类型.参数数据类型仍然是普通数组.

  • 这是我目前的解决方案.所以没有办法更优雅地做到这一点,即没有分配列表和复制对象? (2认同)

das*_*ght 6

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

Console.WriteLine("{0}, {1}", foo, string.Join(", ", objs));
Run Code Online (Sandbox Code Playgroud)