我正在尝试创建一个函数,该函数可以创建一个增加传入的任何整数的 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 选项?