使用来自匿名方法的ref或out参数调用方法

这个问题与前几天我问的问题有关,我从中得到了一些很好的答案。

我需要以通用方式调用具有不同签名的各种Web方法。 我希望能够将Web方法传递给具有委托参数的方法,但我不确定如何处理不同的签名。 解决方案是使用lambdas(或匿名方法,因为我目前正在使用C#2)。

这很好用,直到我需要我的匿名方法来调用带有out参数的web方法。 由于此处说明的原因,您无法执行此操作。

所以我的问题是,除了创建一个没有引用的包装器方法或从我的匿名方法调用params之外,是否有更简单的方法来实现这一点?

实际上,你可以使用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; }