[C#] Lambda Function Capture
·
etc/C#
람다함수를 delegate에 등록해줄 때, 호출부의 지역변수를 사용하고 싶을때가 있다. 이를 변수를 Capture한다고 하는데 무슨 얘기냐 하면 다음 코드를 보자 class Program { static void Main(string[] args) { Action countZeroToFour = null; for(int i=0; i Console.WriteLine(i); } countZeroToFour.Invoke(); } } Action을 Invoke 했을 때, 0~4까지의 숫자를 차례대로 출력하게 하고 싶어서 위와 같이 작성했다. 실행 결과는? 5 5 5 5 5 전혀 다른 결과가 나온다. 프로젝트 진행중에 각 오브젝트에 이벤트를 할당해주면서 저런식으로 작성했었는데 계속 이상한 값이 들어가서 엄청 헤맸..