Blog Content

    티스토리 뷰

    51.C# - Delegate Event (대리자 이벤트)

    반응형
    delegate의 일부분인 Event라는 것이 있습니다. 이벤트는 하나의 상의 이벤트 처리 메서드로 참조를 가질 수 있어 이벤트에 대해 등록된 이벤트 처리기 목록을 유지하여 이벤트를 발생시킨 클래스의 발송자 역활을 합니다. [MSDN]

    A. 자 동차 설계도로부터 하나의 빨간색 스포츠카(속성) 자동차(객체, 개체)를 만들어서 시동 걸고(생성자) 전진 및 좌회전(메서드)를 하면서 가끔은 대리운전(대리자)도 부르고, 그러다가 과속(메서드)이라는 기능 수행 결과 교통사고
    (이벤트)사고가 발생해서 그나마 멀쩡한 카 오디오(필드)는 중고로 팔고 폐차
    (소멸자)했다.


     Program.cs
    using System;

    public class 이벤트
    {
            public static void Main()
            {
                //다중메서드 호출
                Hello.Hi1();            Hello.Hi2();

                //대리자 호출
                Say say;
                say = new Say(Hello.Hi1);
                say += new Say(Hello.Hi2);
                say();

                //[3]이벤트와 헨들러로 호출
                Button btn = new Button();
                btn.Click += new Say(Hello.Hi1);
                btn.Click += new Say(Hello.Hi2);
            }
     }

     Button.cs
    using System;

    //[!]대리자
    public delegate void Say();

    //이벤트와 헨들러로 호출
    public class Button
    {
        //[!] 이벤트 : Click
        public event Say Click;

        //[!] 이벤트 핸들러(처리기)
        public void OnClick()
        {
            if (Click != null) {
                Click();
            }
        }
    }

    public class Hello
    {
        public static void Hi1() {
            Console.WriteLine("안녕하세요"); ;
        }

        public static void Hi2() {
            Console
    .WriteLine("반가워요");
    }
    }

    출력화면

    반응형

    Comments