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)람다식이 외부 스코프의 변수를 참조할 때, 그 변..
Unity - EventSystem (이벤트 시스템)
·
Unity
event 개념은 이전 C#에서 delegate를 학습하면서 다루었던 적이 있다.지금 바로 이 순간을 위한 빌드업이었다고 해도 과언이 아니다.특정 상황이 발생했을 때 다른 시스템에 알려야하는 순간이 존재하고, 이런 구조를 위해 콜백(Callback), 델리게이트(Delegate), 이벤트(Event) 가 존재한다.그리고 Unity에는 UnityEvent 라는 것이 존재한다. 델리게이트 (Delegate)메서드를 변수처럼 저장하고 호출할 수 있는 타입으로, 메서드의 참조(주소)를 담을 수 있는 콜백 구조다.public delegate void OnPlayerDie(); // 메서드 시그니처 정의public class Player{ public OnPlayerDie onPlayerDie; // 델리게..
C# - 델리게이트 (Delegate)
·
C#
델리게이트 (Delegate)특정 시그니처의 메서드를 가리키는 형식(type)특정 시그니처(반환/매개변수)를 만족하는 메서드를 값처럼 담아 전달 / 저장/ 호출하게 해준다. 선언과 대입using System;namespace Delegate{ // 반환: void, 매개변수: 없음 delegate void MyDel(); // 반환: int, 매개변수: 없음 delegate int MyDel2(); class TempClass { public int Property { get; set; } public void PrintTemp() { Console.WriteLine("매개변수도 없고, 반환도 없는 메서드"); ..