C# - 델리게이트(Delegae). 람다식과 캡쳐, 클로져 문제 (feat. useState)
·
C#
사전 지식델리게이트(Delegate) : 함수를 변수처럼 저장하고 실행할 수 있는 타입.void PrintHello() => Console.WriteLine("Hello");void PrintBye() => Console.WriteLine("Bye");Action printer = PrintHello; // 함수 참조를 저장printer(); // Helloprinter = PrintBye; printer(); // Bye 람다식(Lambda Expression) : 화살표 함수, 익명 함수 등으로 불리는 간단한 표현 문법.Func square = (x) => x * x;Console.WriteLine(square(5)); // 25 캡쳐 (Capture)람다식이 외부 스코프의 변수를 참조할 때, 그 변..
C# - 캡쳐(Capture), 클로져(Closure) - feat React.useState
·
C#
델리게이트(delegate)는 메서드를 참조할 수 있는 타입이다.그런데 실제 Unity 같은 환경에서 델리게이트를 남용하다 보면, 사라졌어야 할 객체가 여전히 참조된 채 메모리에 남아 기이하게 동작하는 경우가 생긴다.이는 대부분 캡쳐(변수 포착, Capture) 와 클로져(Closure, 포착된 변수를 계속 보존하는 환경) 의 문제 때문이라고 하는데이 두가지에 대해 자세히 알아보자. 캡쳐(Capture)람다식이 외부의 지역 변수를 가져다가 내부에서 사용하는 것을 말한다.int count = 0;Action myAction = () =>{ count++; // 외부 변수 count를 가져다가 사용 (캡처 발생) Console.WriteLine(count);};myAction(); // 1myA..