델리게이트, 이벤트

2022. 6. 1. 22:14C#/C#에 대한 다양한 공부

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace _0일때_이벤트_발생
{
    //1. 이벤트를 발생시키기 위한 이벤트 핸들러 델리게이트 선언
    public delegate void MyEventHandler(string message);

    //게시자 클래스 선언
    public class Publisher
    {
        //2. 이벤트 선언 (참고로 이벤트 선언은 값을 전달하는 쪽에서 선언)
        public event MyEventHandler MyEvent;
        public void Do(int number)
        {
            //이벤트 게시자가 있는지 유무 체크
            if (MyEvent != null)
            {
                if (number % 10 == 0)
                {
                    MyEvent("Active" + number); //이벤트 발생
                }
                else
                {
                    Console.WriteLine(number);
                }
            }
        }
    }
    //구독자 클래스 선언
    public class Subscriber
    {
        static void Main(string[] args)
        {
            Publisher p = new Publisher();
            p.MyEvent += new MyEventHandler(doAction);

            for (int i = 0; i < 50; i++)
            {
                p.Do(i);
            }
        }
        static public void doAction(string message)
        {
            Console.WriteLine("message : " + message);

        }

    }

}

https://afsdzvcx123.tistory.com/entry/C-C-%EB%AC%B8%EB%B2%95-%EC%9D%B4%EB%B2%A4%ED%8A%B8Event-%EC%84%A0%EC%96%B8-%EB%B0%8F-%EC%82%AC%EC%9A%A9-%EB%B0%A9%EB%B2%95

'C# > C#에 대한 다양한 공부' 카테고리의 다른 글

[async/await]  (0) 2022.07.01
Delegate  (0) 2022.07.01
추상클래스, 인터페이스 연습용  (0) 2022.05.24
델리게이트와 이벤트를 활용한 콜벡메서드 예제  (0) 2022.05.24
11-15장  (0) 2022.04.18