본문 바로가기
유니티 공부/C# 문법

C# 문법 - Delegate(대리자)

by 코딩하는 돼징 2023. 4. 16.
반응형

1. Delegate

형식은 형식인데, 함수 자체를 넘겨주는 그런 형식!


callback 형식

함수 자체를 인자로 넘겨주고 함수를 호출한다.

예시) 사장님(Function)의 비서(Delegate)에게 연락을 요청하지만 받지 않아서 우리의 연락처를 주고 거꾸로(CallBack) 연락을 달라고 요청한다.

// OnClicked라는 delegate를 정의
delegate int OnClicked();

변환 : int, 입력 : void

OnClicked이 Delegate 형식의 이름이다.


2. Delegate 예시

01 첫번째 예시

static void ButtonClicked(OnClicked ClickFunction)
{
    // ClickFunction이 참조하는 메서드를 호출한다.
    ClickFunction();
}

static int TestDelegate()
{
	Console.WriteLine("Hello Delegate");
	return 0;
}

static void Main(string[] args)
{
    // ClickFunction이 TestDelegate를 참조하므로 "Hello Delegate"가 출력된다
	ButtonClicked(TestDelegate);
}

02 두번째 예시

delegate int CalDelegate(int a, int b);
static void Calc(int a, int b, CalDelegate cal)
{
    int res = cal(a, b);
    Console.WriteLine($"{a} {b} {res}");
}
static int Add(int a, int b)
{
    return a + b;
}
static int Substract(int a, int b)
{
    return a - b;
}
static void Main(string[] args)
{
    Calc(1,3,Add);
    Calc(4,5,Substract);
 }


3. Delegate chain

Delegate 객체를 만들게 되면 함수를 뒤에다가 덧붙일 수 있다.

OnClicked clicked = new OnClicked(TestDelegate);
clicked += TestDelegate2;
ButtonClicked(clicked);


 

 

 

 

본 게시글은 MMORPG Part1을 수강하고 정리한 글입니다.

https://www.inflearn.com/course/%EC%9C%A0%EB%8B%88%ED%8B%B0-mmorpg-%EA%B0%9C%EB%B0%9C-part1/dashboard

반응형

'유니티 공부 > C# 문법' 카테고리의 다른 글

C# 문법 - Lambda, Func, Action  (0) 2023.04.19
C# 문법 - Event  (0) 2023.04.18
C# 문법 - property(프로퍼티)  (0) 2023.04.16
C# 문법 - virtual vs abstract vs interface  (0) 2023.04.16
C# 문법 - interface  (0) 2023.04.14

댓글