相关疑难解决方法(0)

C#不能在匿名方法体内使用ref或out参数

我正在尝试创建一个可以创建一个Action的函数来增加传入的整数.但是我的第一次尝试是给出了一个错误"不能在匿名方法体内使用ref或out参数".

public static class IntEx {
    public static Action CreateIncrementer(ref int reference) {
        return () => {
            reference += 1;
        };
    }
}
Run Code Online (Sandbox Code Playgroud)

我理解为什么编译器不喜欢这个,但是我希望有一个优雅的方法来提供一个可以指向任何整数的漂亮的增量器工厂.我看到这样做的唯一方法如下:

public static class IntEx {
    public static Action CreateIncrementer(Func<int> getter, Action<int> setter) {
        return () => setter(getter() + 1);
    }
}
Run Code Online (Sandbox Code Playgroud)

但当然这对来电者来说更是一种痛苦; 要求调用者创建两个lambda而不是仅仅传入一个引用.有没有更优雅的方式来提供这个功能,或者我只需要忍受双lambda选项?

c# lambda anonymous-methods ref

41
推荐指数
2
解决办法
2万
查看次数

标签 统计

anonymous-methods ×1

c# ×1

lambda ×1

ref ×1