closure

Programming/C# & Unity

C# 람다 클로저 원리

개요 C#의 람다식의 사용법과 어떻게 작동하는지 간략하게 정리한다. 람다 int number = 5; // input에 5를 더하여 리턴하는 익명 함수를 담은 변수 action. var action = (int input) => { return number + input; }; // 5 + 10이 리턴되어 15가 출력된다. Console.WriteLine(action(10)); // 출력: 15 위 코드에서 "(int input) => { return number + input; };" 구문을 람다 식이라고 부르며, 함수지만 이름이 없어서 무명 함수(메서드)라고도 부른다. 이때, 익명 함수 외부에서 가져온 변수 number를 캡처된 변수라고 부른다. 그리고 캡처가 완료되어 사용가능한 상태가 된 익명 함수..

Programming/C# & Unity

C# Foreach Closure

C#에서 람다를 사용하여 람다 밖에서 사용 중인 변수를 가져오면(캡처하면) 항상 레퍼런스로 전달되는 것 처럼 처리가 된다. (람다-클로저 관련 원리에 대한 간략한 포스팅) for (int i = 0; i { Thread.Sleep(1000); Console.WriteLine(i); }).Start(); } // 10이 10번 출력됨. 위의 경우에는 하나의 i가 10번 레퍼런스 전달되었고, 1초뒤에 forloop가 전부 끝나서 10이 된 i가 10번 출력되게 된다. 그렇다면 foreach를 사용하면 어떨까? foreach (int i in Enumerable.Range(1, 10)) { new Thread(() => { Thread.Sleep(1000)..

장형이
'closure' 태그의 글 목록