공부/공부(코딩)

델리게이트

Quill 2017. 6. 12. 15:55

 c# 배우기 목차


필요성


단축키 a를 누르면 장풍 마법이 나가도록 하고 싶다고 하자.

a를 누르면 장풍마법 메소드를 불러오면 된다.

그런데 사용자가 a를 누르면 지진 마법이 나오도록 바꾸고 싶어한다.

그러면 a를 누르면 지진 마법 메소드가 나오도록 연결해야한다.


a를 누르면 나와야하는 마법들을 일일이 지정하지 않고 변수처럼 그 때 그 때(사용자가 단축키 변경을 누를 때마다) 다르게 실행하게 할 수는 없을까.

C#에서 델리게이트가 그 역할을 한다.

바로 함수자체를 변수화 시키는 것이다.


사용 방법

----------

  델리게이트형 자료 mydel를 생성한다. 이때 결정되는 리턴 자료형과 메소드 인수가 향후에 사용될 함수들과 일치해야한다.

  이렇게 생성한 mydel은 클래스처럼 사용된다. 즉 mydel이라는 클래스의 객체를 생성하고 거기에 원하는 함수를 대입하는 방식으로 사용한다는 말이다.


예제


// 1. move below code to class level. becouse it needs to be glrobal variable

delegate $void$ $mydel$($string a$) ;


// 2. move below code to method level.

  $mydel$ $clone$= $sayString$;

        $clone$("하이");


/* it is old grammar but still working. 

            $mydel$ clone2= new $mydel$(someotherMethodName);

            clone2("두이");

*/




반응형