안녕하세요.
좋은 사이트 운영해 주셔서 감사합니다.
람다 캡처 관련해서 문의 드리고자 합니다.
예시 코드는 아래와 같습니다.
========================================================
public class TestClass
{
private int num = 0;
public TestClass()
{
Action((int id) =>
{
num = 5;
}, 0);
}
private void Action(Action<int> action, int id)
{
action(id);
}
}
public class Program
{
public static void Main()
{
new Program().Foo();
}
public void Foo()
{
var testClass = new TestClass();
}
}
========================================================
제가 궁금한 점은 TestClass 생성자 부분에 람다 표현식이 있는데,
어떻게 람다 내부에서 TestClass의 private 맴버에 접근할 수 있는지가 궁금합니다.
(Foo 함수에서 TestClass 객체 생성 시 num이 5로 초기화 돼있더라고요.)
추측으로는 내부적으로 임시 클래스를 생성해서 TestClass의 래퍼런스를 저장할 거 같긴 한데 private 맴버는 어떻게 접근 가능한지는 잘 모르겠더라고요.
위 부분에 대해서 알려주시면 많은 도움이 될 거 같습니다.
감사합니다!
[최초 등록일: ]
[최종 수정일: 3/17/2022]