在运行时向params方法传递不同数量的参数

本文关键字:参数 运行时 params 方法 | 更新日期: 2023-09-27 18:01:27

我有params object[] args的方法,并希望在运行时根据条件传递参数。可以是0个对象,也可以是1个,2个对象参数。

如何在运行时构建params object[] args ?

在运行时向params方法传递不同数量的参数

最简单的方法是用您想要传递的参数填充List<object>,然后在调用变量方法之前对其调用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());

使用一个简单的对象数组…

例如,一个签名为

的方法
public void DoSomething(params object[] args)

可以这样调用

object[] args = new object[] {"Hello", "World", 123};
DoSomething(args);

可以在运行时轻松构建数组(例如,使用List)。

我可能遗漏了一些东西,但是为什么不能根据您提到的条件直接使用您想要的参数调用方法呢?你不需要把它们放入数组中(除非你已经在数组中有了它们,但是你只需要传递数组…)。

例如:

public static void Method(params object[] args)
{
}

你可以这样做:

if (condition1)
{
    Method();
}
else if (condition2)
{
    Method("arg");
}
else
{
    Method("arg1", "arg2");
}