4

次のことを検討してください。

最初のアプローチ:

public void f3()
{
f2();
f1();
}

この ...

2番目のアプローチ:

    class Sample
{
    public delegate void MyDelegate(string s);
    MyDelegate obj;

    public Sample()
    {
        obj += new MyDelegate(input);
        obj+=new MyDelegate(something);
        obj += new MyDelegate(someStaticMethod);
    }
}

f3()を呼び出すと、その中にリストされている関数が呼び出されます...デリゲートを呼び出すときにも同じことが起こります...したがって、1番目のアプローチを使用できるときにデリゲートを使用してイベントを処理する方法... 1番目アプローチもメソッド呼び出しをカプセル化します。

4

2 に答える 2

6

デリゲートの場合、アタッチされた関数の呼び出し順序は指定されていません。

また、最初のアプローチのようにハードコードされたオブジェクトだけでなく、実行時にも他のオブジェクトから任意の数の関数をアタッチできます。デリゲートの使用法は広くなっています。

于 2012-06-27T12:50:38.117 に答える
1

最初のアプローチは静的です。委任アプローチを使用すると、あなたまたは発信者は、後で何が呼び出されるかを決定できます。

于 2012-06-27T12:55:52.213 に答える