전달되는 정수를 증가시키는 Action을 만들 수있는 함수를 만들려고합니다. 그러나 첫 번째 시도에서 "ref를 사용할 수 없습니다. out 매개 변수를 익명 메서드 본문 내에서 사용 "합니다. 컴파일러는이를 좋아하지 않는 이유C# 익명 메서드 본문 내에서 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-λ 옵션으로 살 필요가 있습니까?
간단한 예입니까? x ++를 사용하지 않는 이유는 무엇입니까? 이 클래스의 상태를 다른 클래스가 증가시키는 이유는 무엇입니까? – Gishu
@ Gishu 예 이것은 간단한 예입니다. 더 큰 유스 케이스는 설명하기가 어렵지만, 모두 값 유형에 대한 연산을 수행 할 수있는 Action 팩토리를 작성하는 데만 사용됩니다. –