渡された整数をインクリメントするアクションを作成できる関数を作成しようとしていますが、最初の試みで「匿名メソッド本体内で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);
}
}
しかしもちろん、呼び出し元が使用するのは面倒です。参照を渡すだけでなく、呼び出し元が 2 つのラムダを作成する必要があります。この機能を提供するためのより適切な方法はありますか、それとも 2 つのラムダ オプションを使用する必要がありますか?