C#

delegate

Choi G.H 2019. 6. 10. 20:45
반응형

What is delegate?

 

C# delegate는 C/C++의 함수 포인터와 비슷한 개념으로 메서드 파라미터와 리턴 타입에 대한 정의를 한 후, 동일한 파라미터와 리턴 타입을 가진 메서드를 서로 호환해서 불러 쓸 수 있는 기능이다.

 

delegate: (v)위임하다.(n)대리자

 

델리게이트의 파라미터와 리턴형식이 위임하는 메서드와 같도록 한다.

 

using System;

namespace ConsoleApp133
{
    class Program
    {
        public delegate void del(string s);

        static void Main()
        {
            string s = "Hello";
            A a = new A();
            del d = new del(a.method);
            d(s);
        }
    }

    class A
    {
        public void method(string s)
        {
            Console.WriteLine(s);
        }
    }
    
}

멀티 델리게이트를 선언할 때에는 +=와 -=로 위임하고 제거할 수 있다. 

using System;

namespace ConsoleApp133
{
    class Program
    {
        public delegate void del(string s);

        static void Main()
        {
            string s = "Hello";
            A a = new A();
            del d = new del(a.method);
            d += new del(a.method2);            //메서드를 델리게이트에 위임
            d += new del(a.method3);        
            d(s);
        }
    }

    class A
    {
        public void method(string s)
        {
            Console.WriteLine("Method one:" + s);
        }

       public void method2(string s)
        {
            Console.WriteLine("Method two:" + s);
        }

        public void method3(string s)
        {
            Console.WriteLine("Method three:" + s);
        }
    }
    
}

결과

Method one:Hello
Method two:Hello
Method three:Hello
계속하려면 아무 키나 누르십시오 . . .

 

 

출처 : http://www.csharpstudy.com/csharp/CSharp-delegate.aspx

반응형