2009-06-16 7 views
4

この質問はone I asked the other dayに関連しています。匿名メソッドのrefまたはoutパラメータを使用したメソッドの呼び出し

さまざまなシグネチャを持つさまざまなWebメソッドを一般的な方法で呼び出す必要がありました。 Webメソッドをデリゲートの引数を持つメソッドに渡すことができるようにしたかったのですが、さまざまなシグネチャを処理する方法がわかりませんでした。解決策はlambdas(または私が現在C#2を使用しているような匿名メソッド)を使用することでした。

これは、パラメータを使用してWebメソッドを呼び出す匿名メソッドが必要になるまでうまく機能しました。理由の理由でこれを行うことはできませんexplained here

私の質問は、私の匿名メソッドから呼び出すrefまたはoutパラメータなしでラッパーメソッドを作成する以外に、これを達成するための簡単な方法はありますか?

答えて

14

実際には、あなたrefoutを使用することができます - だけではない直接呼び出し元のメソッドのパラメータを持ちます。ただし、呼び出す前と後の値をコピーすることはできます:

static void Foo(ref string s, out int i) 
{ 
    string tmpS = s; 
    int tmpI = 0; // for definite assignment 
    DoIt(delegate { Bar(ref tmpS, out tmpI); }); 
    s = tmpS; 
    i = tmpI; 
} 
+1

乾杯! :) – Charlie

関連する問題