Hoons.Net/C#

캠퍼스 시삽 과제 5-1) Delegate

Houkibosi 2012. 8. 23. 15:49

Delegate 를 MSDN에서 찾아보면 

'명명된 메서드나 무명 메서드를 캡슐화할 때 사용할 수 있는 참조 형식을 선언하는 데 사용됩니다.'

라고 정의되어 있다.

 사용하면서 느끼는 점은 Delegate의 기본베이스는 C++의 함수포인터인 것 같다.

하지만 C#은 C++보다 좀더 고급언어이기때문에 조금더 보안하고 다듬어서 안정성을 강화하고

기능을 추가한 키워드라고 생각한다.

 

MSDN의 샘플을 보면 쉽게 이해된다.

using System;
//Delegate_Test 이름의 델리게이트 정의
delegate void Delegate_Test(string message);

namespace ConsoleApplication1
{
    class Program
    {
        //콘솔창에 파라미터로 받은 문자열을 출력하는 함수 선언
        static void DelegateMethod_Test(string message)
        {
            Console.WriteLine(message);
        }

        static void Main(string[] args)
        {
            //Delegate_Test델리게이트 D1에 DelegateMethod_Test 생성과 인스턴스 생성
            Delegate_Test d1 = DelegateMethod_Test;

            //Delegate_Test델리게이트 D2에 Delegate 함수를 만들어 대입
            Delegate_Test d2 = delegate(string message)
            {
                Console.WriteLine(message);
            };

            // D1과 D2에 문자열을 입력하면 델리게이트 안에 갖고있는
            // 함수의 인자값으로 전달되고 함수가 실행
            d1("Hello");
            d2("World");
        }
    }
}

 

 

결국 델리게이트는 메소드를 보다 효율적으로 사용하기 위해서

메소드를 캡슐화해서 사용하는 것 인거같다.