3

メソッド本体で Action デリゲートを宣言し、2 つのパラメーターが渡され、それらのパラメーターがデリゲートに渡されずにデリゲート コードによって消費されるサンプル コードをいくつか書きました。これらのパラメーターをデリゲートにも明示的に渡す方がきれいに思えますが、この場合はそうではなく、このコードは正常に機能します。

新しいスレッドで現在実行されているエクスポート デリゲートで、.NET がこれらの参照をどのように利用できるようにしているのか疑問に思っています。

    public void MyMethod(文字列名, ComplexObject myObj)
    {

    アクションのエクスポート = () => {
       //名前で何かをする
       名前 = 名前 + 名前;
       //複雑な参照オブジェクトで何かをする
        myObj.SomeMethod(名前);
    };

    // より多くの作業を行う
    // 新しいスレッドでエクスポートを起動する例
    System.Threading.Thread newThread = new System.Threading.Thread(new System.Threading.ThreadStart(export));
    newThread.Start();
    }
4

1 に答える 1

3

コンパイラは、これらの変数を保持する特別な型を作成します。次に、これらの変数をスタックに格納する代わりに、そのメソッドを呼び出すたびにその型のインスタンスをインスタンス化します。次に、匿名デリゲートは、その新しいインスタンスへの参照を使用して、それらの変数にアクセスします。

于 2012-06-05T16:26:16.233 に答える