ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • delegate
    C# 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

    'C#' 카테고리의 다른 글

    System.Collections  (0) 2019.06.12
    System.IO - FileStream  (0) 2019.06.11
    메모리의 특징 이해하기  (0) 2019.06.10
    C# polymorphism (2/4) - Override  (0) 2019.06.06
    Indexer  (0) 2019.06.06
Designed by Tistory.