익명 함수 매개 변수를 사용하는 메서드가 있습니다. 이 함수의 매개 변수는 지역 변수에 의해 제공됩니다.익명 함수 매개 변수의 범위를 제한하는 방법이 있습니까?
public void DoSomething<T>(Action<T> method) where T : new()
{
T instance = new T();
method.Invoke(instance);
}
클로저 생성을 막고 싶습니다. DoSomething<T>
이 완료되면 로컬 변수가 범위를 벗어납니다. 컴파일 시간에 그것을 제한하는 방법이 있습니까?
Foo capturedInstance = null;
DoSomething<Foo>(item => capturedInstance = item);
capturedInstance.Call();
왜 필요한가요? 클로저에주의해야하는 외부 코드입니다. – SimpleVar
@ YoryeNathan 맞습니다. 사용자에게 잘못된 것을하지 않고도 제한 할 수있는 방법이 있는지 궁금했습니다. –
사용자는 항상 잘못된 행동을합니다. 프로그래머는 그를 확인하고 오류를 통해 그를 안내해야합니다. 그러나 다른 프로그래머들을 신뢰하는 것은 적어도 최소한 조금은해야 할 일입니다. 코드를 캡슐화하고 추상화 할 수 있습니다. – SimpleVar