none
C#의 대리자와 이벤트의 기본 작동 방식을 알고 싶습니다. RRS feed

  • 질문

  • 안녕하세요.

    C#에서 사용되는 대리자이벤트기본 동작(작동) 방식을 알고 싶습니다.

    구현 방식에 따른 동기/비동기 방식이 아니라 기본적인 동작 방식에 대한 질문 입니다.

    메서드에 대한 캡슐화와 접근성에 대한 이야기.

    행위에 대한 발생등에 대한 질문이 아니라 기본적인 작동 방식에 대한 질문 입니다.

    감사합니다.


    • 편집됨 TaeksuSon 2014년 1월 14일 화요일 오후 3:58
    2014년 1월 14일 화요일 오후 3:57

답변

  • using System;
    public class Insa
    {
        public void Bye() { Console.WriteLine("잘가"); }
    }
    public class 대리자
    {
        //[!] 대리자 형식(Type) 선언 : 메서드를 묶을 별칭
        public delegate void Say();
        public static void Main(string[] args)
        {
            //[1] 기본 : 따로 따로 호출
            Hi(); Hello();
            //[2] 대리자를 통해서 한번에 2개의 메서드 호출...
            Say say;                //[a] 대리자 형 변수 선언
            say = new Say(Hi);      //[b] Hi 메서드 지정
            say += new Say(Hello);  //[c] Hello 메서드 지정
            say();                  //[d] 대리자로 두 개의 메서드 호출
            //[3] 따로 따로 호출
            Insa insa = new Insa(); insa.Bye(); insa.Bye();
            //[4] 대리자를 통해서 호출
            Say say2 = new Say(insa.Bye);
            say2 += new Say(insa.Bye);
            say2();
        }
        private static void Hello() { Console.WriteLine("방가"); }
        private static void Hi() { Console.WriteLine("안녕"); }
    }

    위 대리자 예제는 Hi(), Hello(), Bye()를 여러번 호출하는 로직을 그냥호출 또는 대리자를 통해서 호출하고 있습니다.

    대리자를 사용하면 여러번의 메서드 호출을 한번에 손쉽게 할수 있습니다.

    Hi(), Hello(), Bye()대신에 마우스 클릭 이벤트 처럼 이벤트를 등록하게 되면 여러개의 이벤트를 대리자를 통해 손쉽게 한번에 호출 할 수 있습니다.

    기본적인 동작 방식이라는게 이것을 의미하는지는 확실치 않지만 참고하세요.

    그럼..

    2014년 1월 15일 수요일 오전 12:10

모든 응답

  • using System;
    public class Insa
    {
        public void Bye() { Console.WriteLine("잘가"); }
    }
    public class 대리자
    {
        //[!] 대리자 형식(Type) 선언 : 메서드를 묶을 별칭
        public delegate void Say();
        public static void Main(string[] args)
        {
            //[1] 기본 : 따로 따로 호출
            Hi(); Hello();
            //[2] 대리자를 통해서 한번에 2개의 메서드 호출...
            Say say;                //[a] 대리자 형 변수 선언
            say = new Say(Hi);      //[b] Hi 메서드 지정
            say += new Say(Hello);  //[c] Hello 메서드 지정
            say();                  //[d] 대리자로 두 개의 메서드 호출
            //[3] 따로 따로 호출
            Insa insa = new Insa(); insa.Bye(); insa.Bye();
            //[4] 대리자를 통해서 호출
            Say say2 = new Say(insa.Bye);
            say2 += new Say(insa.Bye);
            say2();
        }
        private static void Hello() { Console.WriteLine("방가"); }
        private static void Hi() { Console.WriteLine("안녕"); }
    }

    위 대리자 예제는 Hi(), Hello(), Bye()를 여러번 호출하는 로직을 그냥호출 또는 대리자를 통해서 호출하고 있습니다.

    대리자를 사용하면 여러번의 메서드 호출을 한번에 손쉽게 할수 있습니다.

    Hi(), Hello(), Bye()대신에 마우스 클릭 이벤트 처럼 이벤트를 등록하게 되면 여러개의 이벤트를 대리자를 통해 손쉽게 한번에 호출 할 수 있습니다.

    기본적인 동작 방식이라는게 이것을 의미하는지는 확실치 않지만 참고하세요.

    그럼..

    2014년 1월 15일 수요일 오전 12:10
  • 안녕하세요.

    아래 msdn 내용을 참고해 보시기 바랍니다.

    >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>

    이벤트 처리 및 발생(이벤트와 대리자에 대한 설명)

    http://msdn.microsoft.com/ko-kr/library/edzehd2t(v=vs.110).aspx

    그 외 왼쪽 메뉴에 아래 내용을 살펴 보실 수 있습니다.

    방법: 이벤트 발생 및 사용
    방법: 이벤트 속성을 사용하여 여러 이벤트 처리
    방법: Web Forms 응용 프로그램에서 이벤트 사용
    관찰자 디자인 패턴


    Trisha


    • 편집됨 Trisha eun 2014년 1월 15일 수요일 오전 12:56
    2014년 1월 15일 수요일 오전 12:54