我有一个采用参数的方法。在方法内部,另一个变量应添加到输出中:
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
我需要做什么?
我可以将foo
和objs
复制到一个新数组中并将该数组传递给WriteLine
,但是有一种更优雅的方法可以强制objs
再次表现为params ?有点objs.ToParams()
?
答案 0 :(得分:10)
如果您的问题只是向阵列中添加另一个元素,则可以使用List
List<object> list = new List<object> { "hello" };
list.AddRange(objs);
Console.WriteLine("{0}, {1}, {2}, ...", list.ToArray());
params
不是数据类型。参数数据类型仍然是普通数组。
答案 1 :(得分:6)
我会使用string.Join
进行格式化:
Console.WriteLine("{0}, {1}", foo, string.Join(", ", objs));
答案 2 :(得分: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 );
答案 3 :(得分: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);