代码之家  ›  专栏  ›  技术社区  ›  Charlie Gevious

从匿名方法调用带有ref或out参数的方法[重复]

  •  5
  • Charlie Gevious  · 技术社区  · 15 年前

    这个问题与 one I asked the other day 我从中得到了一些有用的答案。

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

    这很好地工作,直到我需要匿名方法用out参数调用一个Web方法。你不能这样做是有原因的 explained here .

    所以我的问题是,除了创建一个不带引用或输出参数的包装方法来从匿名方法调用之外,还有一个更简单的方法来完成这个任务吗?

    1 回复  |  直到 15 年前
        1
  •  15
  •   Marc Gravell    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;
    }