如何将对象数组作为单独的参数传递给方法?

Min*_*wth 1 .net c# parameters delegates dynamic-invoke

我有以下代码:

public class MyClass
{
    private Delegate m_action;
    public object[] m_args;

    public MyClass()
    {

    }

    public MyClass(Delegate action, params object[] args)
    {
        m_args = args;
        m_action = action;
    }

    public void Execute()
    {
        m_action.DynamicInvoke(m_args);
    }
}
Run Code Online (Sandbox Code Playgroud)

这种方法的问题在于 m_args 本身就是一个对象,它的内容没有被扁平化为单独的 params 条目。我怎样才能解决这个问题?

Mar*_*ers 5

我认为你错了。在params如预期似乎工作。这是一个更简单的示例,表明它有效:

static void f(params object[] x)
{
    Console.WriteLine(x.Length);
}

public static void Main()
{
    object[] x = { 1, 2 };
    f(x);
}
Run Code Online (Sandbox Code Playgroud)

结果:

2
Run Code Online (Sandbox Code Playgroud)

在线查看:ideone