Notice
Recent Posts
Recent Comments
Link
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | 5 | 6 | |
| 7 | 8 | 9 | 10 | 11 | 12 | 13 |
| 14 | 15 | 16 | 17 | 18 | 19 | 20 |
| 21 | 22 | 23 | 24 | 25 | 26 | 27 |
| 28 | 29 | 30 |
Tags
- 스택
- 차이점
- std::unordered_map
- 큐
- MonoBehaviour
- 배열
- thread
- list
- 힙영역
- 트리
- map
- c#
- 인프런
- 공부
- 해쉬맵
- 리스트
- 프래그멘테이션
- static_cast
- Queue
- 스택영역
- 반복문
- vector
- 기술면접
- rookiss
- 객체지향
- 알고리즘
- 벡터
- 멀티쓰레드
- std::map
- 자료구조
Archives
- Today
- Total
호빵의 IT 개발소
[C#] Delegate (대리자) 본문
대리자를 들어가기 전에 간단한 예시를 상황을 이해하고 들어가야 이해하기가 수월합니다.
1. 업체 사장님께 연락 - 사장님의 비서에게 전화가 넘어감
2. 우리의 연락처와 용건을 비서에게 알려준 뒤 //함수 자체를 인자로 넘겨줌
3. 거꾸로 연락을 달라고 얘기를 합니다. //콜백방식 즉, 함수를 호출
함수 자체를 인자로 넘겨주고 나중에 필요할 때 안쪽에서 역으로 호출하는 것을 콜백 방식이라고 합니다.
class Program
{
//UI
static void ButtonPressed(/* 함수 자체를 인자로 넘겨주고 */)
{
// 함수를 호출();
}
static void Main(string[] args)
{
// delegate (대리자)
Console.WriteLine();
ButtonPressed(/* */);
}
}
delegate
형식은 형식인데, 함수 자체를 인자로 넘겨주는 형식
int는 반환, void는 입력, 예제에서 OnClicked는 delegate 형식의 이름입니다.
class Program
{
delegate int OnClicked(); //반환 : int , 입력 : void
//UI
static void ButtonPressed(OnClicked clickedFunction/* 함수 자체를 인자로 넘겨주고 */)
{
// 함수를 호출();
clickedFunction();
}
static int TestDelegate()
{
Console.WriteLine("Hello Delegate")
return 0;
}
static int TestDelegate2()
{
Console.WriteLine("Hello Delegate2")
return 0;
}
static void Main(string[] args)
{
// delegate (대리자)
Console.WriteLine();
ButtonPressed(TestDelegate); //함수 자체를 인자로 넘김 (첫번쨰 방법)
Onclicked clicked = new Onclicked(TestDelegate);
clicked += TestDelegate2; //체이닝 기능 즉, TestDelegate가 실행되고 뒤에 TestDelegate2가 실행됨
}
}
※ ButtonPressed(TestDelegate);와 Onclicked clicked = new Onclicked(TestDelegate);는 같은 의미이나 뒤에 예제를 쓰는 이유는 체이닝 기능 즉, 대리자에 여러개의 함수를 넘겨줄 수 있습니다.
---------------------------------------------------------------------------------------------------------------------------
참고 : [인프런] Rookiss님의 [C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part1: C# 기초 프로그래밍 입문
'C#, 유니티 > C# 기초' 카테고리의 다른 글
| [C#] Lambda (0) | 2022.01.09 |
|---|---|
| [C#] Event (0) | 2022.01.09 |
| [C#] Property (0) | 2022.01.09 |
| [C#] Interface (0) | 2022.01.09 |
| [C#] Generic(일반화), object (0) | 2022.01.09 |
Comments