본문 바로가기
프로그래밍언어 & 프레임워크/C#

C# 이벤트(Event)

by 공부하는개미 2021. 5. 21.
반응형

아래 글은 C# 이벤트 관련 개념 정리 및 작성자 공부를 위해 작성되었습니다.

 

 

 

 

📃 참고자료

 

 

 

 

https://www.youtube.com/watch?v=C8xtvboY1gI 

 

 

 

#  이벤트

 

  • 특정 상황이 발생할 때 개체 또는 클래스에서 알림을 제공 할 수 있도록 하는 멤버
  • 이벤트는 클래스내에 특정한 일(event)이 있어났음을 외부의 이벤트 가입자(subscriber)들에게 알려주는 기능
  • 클래스 내에서 일종의 필드처럼 정의된다.

 

 

# 이벤트 핸들러(Event Handler)

이벤트에 가입하는 외부 가입자 측에서는 이벤트가 발생했을 때 어떤 명령들을 실행할 지를 지정해 주는데,

이를 이벤트 핸들러라 한다. 이벤트에 가입하기 위해서는 += 연산자를 사용하여 이벤트 핸들러를 이벤트에 추가한다.

반대로 이벤트핸들러를 삭제하기 위해서는 -= 연산자를 사용한다. 하나의 이벤트에는 여러 개의 이벤트핸들러들을 추가할 수 있으며, 이벤트가 발생되면 추가된 이벤트핸들러들을 모두 차례로 호출한다.

 

 

 

 

 

 

예제코드

 

using System;

public class ButtonClass
{
    //[1] 이벤트 생성을 위한 대리자 하나 생성
    public delegate void EventHandler(); // 여러 개 메서드 등록 후 호출 가능

    //[2] 이벤트 선언: Click 이벤트 
    public event EventHandler Click;

    //[3] 이벤트 발생 메서드: OnClick 이벤트 처리기(핸들러) 생성
    public void OnClick()
    {
        if (Click != null) // 이벤트에 등록된 값이 있는지 확인(생략 가능)
        {
            Click(); // 대리자 형식의 이벤트 수행
        }
    }
}

class EventDemo
{
    static void Main()
    {
        //[A] Button 클래스의 인스턴스 생성
        ButtonClass btn = new ButtonClass();

        //[B] btn 개체의 Click 이벤트에 실행할 메서드들 등록
        btn.Click += Hi1; // btn.Click += new ButtonClass.EventHandler(Hi1);
        btn.Click += Hi2; // btn.Click += new ButtonClass.EventHandler(Hi2);

        //[C] 이벤트 처리기(발생 메서드)를 통한 이벤트 발생: 다중 메서드 호출
        btn.OnClick();
    }
    static void Hi1() => Console.WriteLine("C#");
    static void Hi2() => Console.WriteLine(".NET");
}

 

 

반응형

'프로그래밍언어 & 프레임워크 > C#' 카테고리의 다른 글

C# 생성자(Constructor)  (0) 2021.05.22
C# 필드(Field)  (0) 2021.05.21
C# 대리자(Delegate)  (0) 2021.05.20
C# 속성(Property)  (0) 2021.05.20
C# 예외처리하기(Exception)  (0) 2021.05.19