質問

Pythonでは、私はこのような何かを行うことができます:

List=[3, 4]

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

Add(*List) #7

C#でこのまたは似た何かをする方法はありますか?基本的に私は、任意の関数の引数のリストを渡すことができるようにしたい、と彼らは手動でリストを開梱して、明示的にパラメータを指定して関数を呼び出すことなく、関数のパラメータとして適用されている。

役に立ちましたか?

解決

まあ、最も近い反射だろうが、それは遅い側にある...しかし、<のhref =「http://msdn.microsoft.com/en-us/library/a89hcwhh.aspx」のrelを見て= "noreferrer"> MethodInfo.Invoke の...

他のヒント

あなたの方法を定義するときにのparamsキーワードを使用することができますし、あなたが直接あなたのメソッド呼び出しで(たToArrayを呼び出した後に)あなたのリストを置くことができます。

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

...これは後で以下で呼び出すことができます。

object[] myObjArray = { 2, 'b', "test", "again" };
UseParams(myObjArray);

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

あなたは、手の少し振ってと密接している件の観光名所(foreachのにどちらかの収量を、またはラムダをとるコレクションにforeachの拡張メソッドを追加する)ことができ、カントませんが、あなたがpythonで取得するようエレガントな何もます。

LINQを使用すると、あなたの例にかなり近いとするこれを行うことができます。

 var list = new List<int> { 3, 4 };
 var sum = list.Sum();
Func<List<float>, float> add = l => l[0] + l[1];
var list = new List<float> { 4f, 5f };
add(list); // 9

または

Func<List<float>, float> add = l => l.Sum();
var list = new List<float> { 4f, 5f };
add(list); // 9

あなたはそれが静的に型付けされます考慮C#で取得する最も近いです。あなたが探している正確に何のためにF#のパターンマッチングに見ることができます。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top