1. Delegate
delegate는 method를 참조하는 타입이다.
delegate를 이용하면 method를 매개변수로 전달하거나 변수에 할당할 수 있다.
ex) 사용 예시
delegate void MyDelegate(string message);
static void Method1(string message)
{
Console.WriteLine("Method1: " + message);
}
static void Method2(string message)
{
Console.WriteLine("Method2: " + message);
}
class Program
{
static void Main()
{
// delegate instance 생성 및 method 등록
MyDelegate myDelegate = Method1;
myDelegate += Method2;
// delegate 호출
myDelegate("Hi!");
// 출력
// Method1: Hi!
// Method2: Hi!
}
}
위 예시 코드처럼 사용할 수 있으며, 하나 이상에 method도 등록할 수 있다.
예시 코드처럼 delegate나 method 둘 다 접근할 수 있는 상황에서 굳이 delegate를 사용해야되는지 생각할 수 있지만, 접근이 어려운 경우에 사용이 유용하다고 한다.
2. Lamda
lamda는 익명 method를 만드는 방법이다.
lamda를 사용하면 method의 이름 없이 method를 만들 수 있다.
그래서 delegate를 사용하여 변수에 할당하거나, method의 매개변수로 전달할 수 있다.
물론 그냥 변수에도 사용할 수 있다. ex) bool IsDead => Health <= 0;
ex) 사용 예시
// 형식
(parameter_list) => expression
// 구현 예시
delegate int Calculate(int x, int y);
Calculate sum = (x, y) =>
{
return x + y;
};
// method로 구현하는 부분이 한 줄인 경우 {} 생략
Calculate sum = (x, y) => x + y;
method를 사용하고 싶지만 여러 곳에 중복적으로 사용되지 않고, 간단하게 사용할 때 lamda 방식을 활용하면 쉽게 코드를 구현할 수 있었다.
'내배켐 Unity TIL' 카테고리의 다른 글
Unity 14일차 TIL - Github (0) | 2024.04.30 |
---|---|
Unity 11일차 TIL - Func, Action (0) | 2024.04.25 |
Unity 9일차 TIL - Class (0) | 2024.04.23 |
Unity 8일차 TIL - 배열과 리스트 (0) | 2024.04.22 |
Unity 4일차 TIL - Unity 광고 안드로이드 적용 시 오류 수정 (1) | 2024.04.18 |