2

.NET フレームワークが標準デリゲートを指定するのはなぜですか? 新しいデリゲート型の宣言は簡単で、1 行のコードで実行できます。

public delegate void Something<T>(T obj);

これらの他のすべてのタイプ (アクション、アクションなど) を定義するのはなぜですか?

その目的とそれによって得られるものは何ですか?

http://msdn.microsoft.com/en-us/library/system.action.aspx

私が疑問に思っているもう 1 つのことは、型パラメーターの数が異なることを除いて、すべて同じである 17 のバージョンを定義し続けていることです。しかし、なぜ17で止まるのですか?そのタイプの決定を通知するものは何ですか?

4

2 に答える 2

1

1 つのコードで次のように宣言されている場合:

public delegate void SingleArgumentMethod<T>(T obj);
DoSomething(SingleArgumentMethod<int> thingDoDo);

他のコードでは次のように宣言されています。

public delegate void OneArgumentMethod<T>(T obj);
PerformAction(OneArgumentMethod<int> theAction);

SingleArgumentMethod<int>と aは無関係な型になるため、 が受け取ったデリゲートを に渡すOneArgumentMethod<int>良い方法はありません。代わりに、メソッド ポインターとターゲットを使用してのインスタンスを生成し、それを に渡す必要があります。ただし、両方のメソッドが同じデリゲート定義を使用していた場合、そのような複雑さは必要なく、単純に を呼び出すことができます。DoSomethingPerformActionOneArgumentMethod<int>thingToDoPerformActionDoSomethingPerformAction(thingToDo);

于 2014-02-10T19:28:51.383 に答える