[C#] Delegate 란

• Delegate 란.

  • C언어의 함수포인터를 그대로 차용한것.
  • 메서드의 위치를 간직하고 있고, 그 메서드를 대신 실행.
  • 해당 메서드를 직접 실행 할 수 없는경우.
  • 메서드가 외부 메서드에 있거나, 런타임 도중 동적으로 바뀌는 경우 등등.

• ExamDelegate01.cs

/**
 * @file    ExamDelegate01.cs
 * @brief   델리게이트 예제.
 * @details 델리게이트 사용법.
 * @version  0.0.1
 */
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace StudyCSharp_Bong9
{
    namespace ExamDelegate01
    {

        /**
         * @brief    델리게이트 예제 Basic 클래스.
         * @author   김봉재.
         * @date     2014-08-07
         */
        class ExamDelegate
        {
            ///@brief int를 리턴해주고, int a, int b의 파라메터를 가지는 형식의 함수를 대신 호출 해주겠음. 이라는 의미의 델리게이트(대리자)선언.
            delegate int DelegateMethod(int a, int b);

            static int Average(int a, int b)
            {
                return (int)((a + b) / 2);
            }

            static void Main(string[] args)
            {
                ///@brief Average메서드를 미리 선언한 델리게이트 형식으로 간접 호출.
                DelegateMethod method = Average;
                int a;
                int b;

                Console.Write("값 a를 입력하세요 : ");
                a = int.Parse(Console.ReadLine());
                Console.Write("\n");

                Console.Write("값 b를 입력하세요 : ");
                b = int.Parse(Console.ReadLine());
                Console.Write("\n");

                ///@brief method(a,b)로 간접 호출.
                Console.WriteLine("( a = {0} ) 과 ( b = {1} )의 평균값은 {2}입니다.", a, b, method(a, b));
            }
        }
    }
}
C#에 게시됨

답글 남기기

아래 항목을 채우거나 오른쪽 아이콘 중 하나를 클릭하여 로그 인 하세요:

WordPress.com 로고

WordPress.com의 계정을 사용하여 댓글을 남깁니다. 로그아웃 /  변경 )

Google photo

Google의 계정을 사용하여 댓글을 남깁니다. 로그아웃 /  변경 )

Twitter 사진

Twitter의 계정을 사용하여 댓글을 남깁니다. 로그아웃 /  변경 )

Facebook 사진

Facebook의 계정을 사용하여 댓글을 남깁니다. 로그아웃 /  변경 )

%s에 연결하는 중

This site uses Akismet to reduce spam. Learn how your comment data is processed.