갑자기 궁금해졌는데 딱히 맘에 드는 답변이 없어서 질문을 올립니다.
지역변수를 델리게이트에서 사용했는데 callback해서 나중에 그 지역변수는 어떻게 살아있는 건가요?
예를 들면
delegate OnTempEvent();
string str = "temp String";
OnTempEvent callback = ()=> { Consol.WriteLine(str); };
이런식으로 쓰고 반환형이든 매개변수에서 어떤 클래스에 인자로 전달하는 방식을 사용했다고 가정한다면
나중에 가서
callback() 호출하면 정상적으로 "temp String" 출력되는데 어떻게 저함수를 벋어나면 스택에서 빠질텐데
살아 있는거임?
6개의 댓글
무분별한 사용은 차단될 수 있습니다.
statover
c# 람다 클로저 검색 ㄱㄱ
RX7900XTX
아하 ㅈㄴ 시원하네요 이런 명사적인거 검색하는걸 잘 못해서
제가 원하는 검색 키워드이었음ㅋㅋㅋㅋ
겜신병자
뭔가 잘못알고 게신거같은데 대리자는 함수를 대신호출해주는 역할임.
c++에서 함수포인터 비슷함.
본질적인걸 보면,
대리자에 호출예약을 걸고 코드 진행중 대리자를 호출하면, 예약된 매서드들이 호출되는거임.
이걸 비동기로 호출하면 별도의 스레드가 생성되고 거기에서 호출되는거고.
a1s2d3f4g5
이건그냥 람다클로저보다 로워링된 코드 보면 직빵인데
https://developstudy.tistory.com/107
a1s2d3f4g5
로워링은이런거고 씨샵용어가아니라 공통개념임
https://www.linkedin.com/pulse/lowering-c-sanjay-idpuganti
RX7900XTX
요약하면 컴파일러가 해 주는거구나 ㅎㄷㄷ