2009-06-16 72 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 2009-06-16 13:37:34

相關問題