C# 将params数组作为每个单独的参数传递

C# 将params数组作为每个单独的参数传递,c#,unity3d,C#,Unity3d,我目前将参数作为对象数组,但我希望将每个单独的键传递到不同的函数中,而不是传递数组。下面是一个代码示例: FunctionOne("variableOne", "variableTwo"); public void FunctionOne(params object[] args) { FunctionTwo(args); } 只需获取所需的数组参数: FunctionOne("variableOne", "var

我目前将参数作为对象数组,但我希望将每个单独的键传递到不同的函数中,而不是传递数组。下面是一个代码示例:

FunctionOne("variableOne", "variableTwo");

public void FunctionOne(params object[] args) {
    FunctionTwo(args);
}

只需获取所需的数组参数:

FunctionOne("variableOne", "variableTwo");

public void FunctionOne(params object[] args) {
    FunctionTwo(args[0]);
}
因此,如果需要每个参数,可以使用foreach循环进行迭代:

FunctionOne("variableOne", "variableTwo");

    public void FunctionOne(params object[] args)
    {
        foreach (object item in args)
        {
            FunctionTwo(item);
        }
    }

只需获取所需的数组参数:

FunctionOne("variableOne", "variableTwo");

public void FunctionOne(params object[] args) {
    FunctionTwo(args[0]);
}
因此,如果需要每个参数,可以使用foreach循环进行迭代:

FunctionOne("variableOne", "variableTwo");

    public void FunctionOne(params object[] args)
    {
        foreach (object item in args)
        {
            FunctionTwo(item);
        }
    }

如果希望它与动态大小的arguments数组一起工作,可以使用它来实现这一点

typeof(YourClassName).GetMethod(nameof(FunctionTwo)).Invoke(this, args);
但请注意,这种操作比直接调用方法慢得多。您还可以将
MethodInfo
保存在静态变量中,以便只调用一次.GetMethod(),如下所示:

private static MethodInfo FunctionTwoMethodInfo = typeof(YourClassName).GetMethod(nameof(FunctionTwo));
然后像这样称呼它:

FunctionTwoMethodInfo.Invoke(this, args);

如果希望它与动态大小的arguments数组一起工作,可以使用它来实现这一点

typeof(YourClassName).GetMethod(nameof(FunctionTwo)).Invoke(this, args);
但请注意,这种操作比直接调用方法慢得多。您还可以将
MethodInfo
保存在静态变量中,以便只调用一次.GetMethod(),如下所示:

private static MethodInfo FunctionTwoMethodInfo = typeof(YourClassName).GetMethod(nameof(FunctionTwo));
然后像这样称呼它:

FunctionTwoMethodInfo.Invoke(this, args);

不过,我想要参数的每个参数,从无参数到大量参数。请以不同的方式解释,我看不出您想要实现什么:(我更新了答案,解释了如何迭代每个参数,但我不确定这是否是您的问题:/My抱歉,我希望能够使用每个参数运行FunctionTwo,如下所示:FunctionTwo(arg1、arg2、arg3,…)而不是每次都用一个新的argument@GlorifiedPig如果作为
params
传递的项目数与您的
FunctionTwo
签名不匹配怎么办?您需要明确表示,例如
FunctionTwo(args[0],args[1],//等等。
,如果项目太少,将引发异常。唯一的另一种方法是使用反射。问题是,我指向它的函数也使用参数。但我希望参数的每个参数,从无参数到大量。请以不同的方式解释,我看不出您想要实现什么:(我更新了答案,解释了如何迭代每个参数,但我不确定这是否是您的问题:/My抱歉,我希望能够使用每个参数运行FunctionTwo,如下所示:FunctionTwo(arg1、arg2、arg3,…)而不是每次都用一个新的argument@GlorifiedPig如果作为
params
传递的项目数与您的
FunctionTwo
签名不匹配怎么办?您需要明确表示,例如
FunctionTwo(args[0],args[1],//等等。
,如果项目太少,将引发异常。唯一的其他方法是使用反射。问题是,我指向它的函数也使用参数。