这个问题与one I asked the other day有关,我从中得到了一些很好的答案。
我需要以通用方式调用具有不同签名的各种Web方法。我希望能够将Web方法传递给具有委托参数的方法,但我不确定如何处理不同的签名。解决方案是使用lambdas(或匿名方法,因为我现在正在使用C#2)。
这很好用,直到我需要我的匿名方法来调用带有out参数的web方法。出于explained here的原因,您无法执行此操作。
所以我的问题是,除了创建一个没有引用的包装器方法或者从我的匿名方法调用params之外,是否有更简单的方法来实现这一目标?
答案 0 :(得分:15)
实际上,你可以使用ref
和out
- 而不是直接使用调用方法的参数;但是,您可以在调用之前和之后复制值:
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;
}