Steady Blog

델리게이트 본문

임시 자료/유니티_안드로이드

델리게이트

우유먹고쑥 2014. 5. 8. 06:55

원문 : http://blog.eairship.kr/151


1. 델리게이트


델리게이트는 한마디로 말해서 대리자 라고 말할 수 있다.

즉, 대신 일을 해주는 것으로서, 메소드 참조를 포함하고 있는 영역이라고 말한다.


선언 형식


delegate 반환형 델리게이트명(매개변수);


위의 형식을 보면 메소드와 같은 모양인데, 델리게이트는 위에서 언급한 대로, 메소드의 참조를 포함한다.


델리게이트는 메소드를 참조하는 것으로서, 메소드를 넘겨 줄수 있다.

즉, 델리게이트를 참조하는 메소드가 달라진다면 델리게이트 역시 달라진다.

(주의할 점은, 매개변수의 데이터 형식과 ㅏ반환형은 ㅊ참조할 메소드의 매개변수의 데이터 형식과 반환형에 맞추어야 하며, 갯수 역시도 맞춰야 한다.)



using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

using System.Threading.Tasks;


namespace test_0508

{

    delegate int PDelegate(int a, int b);


    class Program

    {

        static int Plus(int a, int b)

        {

            return a + b;

        }

        static void Main(string[] args)

        {

            PDelegate pd1 = Plus;

            PDelegate pd2 = delegate(int a, int b)

            {

                return a / b;

            };

            Console.WriteLine(pd1(5, 10));

            Console.WriteLine(pd2(10, 5));

        }

    }

}



결과 
15
 2



코드를 보면 9행의 PDelegate 라는 델리게이트가 보이는데,

매개 변수 부분에는 int형 매개변수 a,b를 명시해 주었다.

13~16행에서는 Plus란 메소드가 정의 되 있다.


여기서 자세히 보자면, 20행에서 Plus 메소드 자체를 델리게이트에 집어 넣고 있으며, Plus메소드와 연결하여 대리자를 인스턴스화 한다.


이제부터 델리게이트 pd1은 Plus메소드를 참조하게 된다.

26행을 보면 plus 메소드를 쓰는 a와 b를 더한 값을 반환한다.


21행을 보면, 아무 이름이 없는 메소드를 델리게이트에 집어 넣는다.

별로도 메소드를 만들지 않았음에도 불구하고 실행 된다.

이런 무명 메소드의 사용은 한번 사용하면 불필요해지는 메소드를 만들때도 사용 되는 등 매우 유용하다.

'임시 자료 > 유니티_안드로이드' 카테고리의 다른 글

Intent 란?  (0) 2014.08.25
Activity란?  (0) 2014.08.25
startActivityForResult(), onActivityResult() 사용하기  (0) 2014.08.25
안드로이드 블루투스 통신  (0) 2014.08.20
Unity Life Cycle  (0) 2014.05.08