我正在尝试创建一个函数,该函数可以创建一个Action来增加传入的任何整数值。但是我的第一次尝试会出现错误"无法在匿名方法体内使用ref或out参数"。
public static class IntEx {
public static Action CreateIncrementer(ref int reference) {
return () => {
reference += 1;
};
}
}
我理解为什么编译器不喜欢这个,但是尽管如此,我还想以一种优雅的方式提供一个漂亮的递增器工厂,可以指向任何整数。我所看到的唯一方法就是类似下面这样:
public static class IntEx {
public static Action CreateIncrementer(Func<int> getter, Action<int> setter) {
return () => setter(getter() + 1);
}
}
但是对于调用者来说,这样做会更加困难;需要调用者创建两个lambda表达式而不是只传递一个引用。是否有更优雅的方式提供这个功能,还是我只能接受使用两个lambda表达式的选项?