C#で匿名の代理人のリストを作成することはできますか?ここで私が書くのが大好きだけど、それはコンパイルできないコードは次のとおりです。Is List <T> Tは匿名の代理人が可能ですか?
Action<int> method;
List<method> operations = new List<method>();
C#で匿名の代理人のリストを作成することはできますか?ここで私が書くのが大好きだけど、それはコンパイルできないコードは次のとおりです。Is List <T> Tは匿名の代理人が可能ですか?
Action<int> method;
List<method> operations = new List<method>();
あなたはこれを書くことができ、例えば、
Action<int> method = j => j++;
List<Action<int>> operations = new List<Action<int>>();
operations.Add(method);
operations.Add(i => i++);
のためにそれはのように、特定のデリゲート型の一覧を作成できることは間違いありませんアクション、Func、その他匿名の代理人は、互換性のある署名を持つ任意の代理人の型にキャストできるため、互換性のある署名がある限り、代理人の一覧を作成できます。
複数の種類のシグネチャを持つデリゲートのリストを作成することは、不特定のシグネチャを持つとデリゲートを呼び出すことが非常に困難になるため、大いに役立つと思います。あなたは反射でそうすることができるはずです。その場合は、単にオブジェクトのリストを使うことができます。
コードの問題は、インスタンスをListの型引数として指定しようとしていることです。
Action<int> method
がインスタンスであり、Action<int>
が型です。
別のポスターに言及すると、リストのタイプをAction<int>
、つまりタイプパラメータだけで宣言する必要があります。
あなたが特定のデリゲートよりも少し柔軟な何かが必要な場合は
var myNum = 5;
var myops = new List<Action<int>>();
myops.Add(j => j++);
myops.Add(j => j++);
foreach(var method in myops)
{
Console.WriteLine(method(myNum));
}
// Frowned upon, but fun syntax
myops.Each(method => method(myNum));
、この質問に対する回答で定義されているデリゲートを見てみた試してみてください。http://stackoverflow.com/questions/1184329/function-pointers -in-c –