[C#] 델리게이트
개요
Deligate란?
=> 델리게이트란 대리자라는 의미로 함수를 변수처럼 사용할 수 있는것 입니다.
주로 콜백함수 처럼 무언가의 처리가 끝난 후 호출하고 싶은 처리, 비동기 처리의 종료통지 등에 사용됩니다.
유니티에서 델리게이트 ->유니티
사용 방법
델리게이트는 아래와 같은 형식으로 선언이 가능합니다.
매개변수가 있는 경우
delegate 데이터형 델리게이트이름(매개변수);
매개변수가 없는 경우
delegate 데이터형 델리게이트이름();
다음은 텍스트를 출력하는 함수를 델리게이트에 넣어 실행하는 예시 입니다.
using System;
class MainClass
{
delegate void TestDelegate();
public static void Main(string[] args)
{
TestDelegate _testDelegate = ShowText;
_testDelegate();
}
static void ShowText()
{
Console.WriteLine("Test Delegate");
}
}
다음은 매개변수가 있는 경우 델리게이트의 사용 예시 입니다.
using System;
class MainClass
{
delegate void TestDelegate(string _text);
public static void Main(string[] args)
{
TestDelegate _testDelegate = ShowText;
_testDelegate("Test Delegate");
}
static void ShowText(string _text)
{
Console.WriteLine(_text);
}
}
다음은 반환값이 있는 경우 델리게이트의 사용 예시 입니다만,
상기의 사용 예시들과 크게 다른점은 없습니다.
using System;
class MainClass
{
delegate string TestDelegate(string _text);
public static void Main(string[] args)
{
TestDelegate _testDelegate = ShowText;
Console.WriteLine(_testDelegate("Test Delegate"));
}
static string ShowText(string _text)
{
return _text;
}
}
콜백 함수에서의 사용
using System;
class MainClass
{
delegate void CallbackTest();
public static void Main(string[] args)
{
CallbackTest _callbackTest = Reply;
MeetFriend(_callbackTest);
}
static void Reply()
{
Console.WriteLine("fine~ and u?");
}
static void MeetFriend(CallbackTest _callback)
{
Console.WriteLine("Hey~ how have you been?");
_callback();
}
}