类似Python的列表在C#中解压缩?

rye*_*guy 8 c# iterable-unpacking

在python中,我可以这样做:

List=[3, 4]

def Add(x, y):
    return x + y

Add(*List) #7
Run Code Online (Sandbox Code Playgroud)

在C#中有没有办法做到这一点或类似的东西?基本上我希望能够将一个参数列表传递给一个任意函数,并将它们作为函数的参数应用,而无需手动解包List并调用显式指定参数的函数.

Mar*_*ell 6

嗯,最接近的是反射,但这是缓慢的......但是看看MethodInfo.Invoke ......


ere*_*eit 5

您可以在定义方法时使用 params 关键字,然后您可以直接将列表(在调用 ToArray 之后)放入方法调用中。

public static void UseParams(params object[] list)
{
        for (int i = 0; i < list.Length; i++)
        {
            Console.Write(list[i] + " ");
        }
        Console.WriteLine();
}
Run Code Online (Sandbox Code Playgroud)

...您可以稍后调用以下内容。

object[] myObjArray = { 2, 'b', "test", "again" };
UseParams(myObjArray);
Run Code Online (Sandbox Code Playgroud)

供参考:http : //msdn.microsoft.com/en-us/library/w5zay9db.aspx