我有params object[] args
的方法,并希望在运行时根据条件传递参数。它可以是零对象或一个,两个对象参数。
如何在运行时构建params object[] args
?
答案 0 :(得分:4)
最简单的方法是使用您想要传递的参数填充List<object>
,然后在调用vararg方法之前调用ToArray()
。 List<T>
可以动态增长,让您可以根据需要容纳尽可能多的参数。这是一个假设的例子,它传递一个带有七个参数的数组:
var args = new List<object>();
args.Add(firstArg);
args.Add(secondArg);
for (int i = 0 ; i != 5 ; i++) {
args.Add(i);
}
MyMethodWithVarArgs(args.ToArray());
答案 1 :(得分:3)
使用简单的对象数组......
例如,具有此签名的方法
public void DoSomething(params object[] args)
可以这样调用
object[] args = new object[] {"Hello", "World", 123};
DoSomething(args);
可以在运行时轻松构建数组(例如,使用List)。
答案 2 :(得分:1)
我可能会遗漏一些东西,但为什么你不能简单地用你想要的参数直接调用方法,具体取决于你提到的条件?你不需要将它们放入一个数组中(除非你已经将它们放在一个数组中,但是你只需要传递数组......)。
例如,给定:
public static void Method(params object[] args)
{
}
你可以这样做:
if (condition1)
{
Method();
}
else if (condition2)
{
Method("arg");
}
else
{
Method("arg1", "arg2");
}