1 minute read

개요


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();
    }
}


Top