C#/C#정리

[C#] Delegate - 델리게이트(대리자)를 사용하는 이유

반나무 2021. 8. 18. 21:09

  🌳 Delegate  

메서드를 담을 수 있는 타입.
  • 관례적으로 Delegate 타입의 이름은 끝에 Delegate라는 접미사를 붙인다.
  • JS의 함수를 변수처럼 사용하는 개념과 유사하다.
  • C, C++ 개발자들에게는 간단하게 함수포인터 라고한다.

🌳 델리게이트를 사용하는 이유

보통 이벤트 핸들링을 위해서 사용한다.

콜백을 위해서도 사용한다.

델리게이트를 잘 사용하면 이벤트 규격(함수형태)만 잘 정의하면 필요한 정보를 필요한 오브젝트에 쉽게 전달할 수 있다.


🌳 델리게이트 생성 예제

public class DelegateExample
{
    delegate void ExampleDelegate();

    void Start()
    {
        ExampleDelegate del = Hello;
        del();
    }

    void Hello()
    {
        Debug.Log("Hello");
    }
}

 

🌳 멀티캐스트 기능

멀티캐스트란 여러 개의 메서드를 담을 수 있다는 뜻

+=로 추가

-=로 제거

public class DelegateExample
{
    delegate void HumanDelegate();

    void Start()
    {
        HumanDelegate human = Walk;
        human += Eat;
        human += Sleep;

        human();
    }

    void Walk()
    {
        Debug.Log("Walk");
    }

    void Eat()
    {
        Debug.Log("Eat");
    }

    void Sleep()
    {
        Debug.Log("Sleep");
    }
}

🌳 Func & Action

무명 델리게이트로 별도의 선언 없이 사용가능하다.

반응형