2009-06-16 91 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