반응형
아래 글은 C# 이벤트 관련 개념 정리 및 작성자 공부를 위해 작성되었습니다.
📃 참고자료
- C# 교과서(길벗 출판사) - 41 이벤트(Event) 564 ~ 566페이지
- 유튜브채널 VisualAcademy [C# 교과서 마스터하기 41. 이벤트(Event)]
- csharpstudy.com
(https://www.csharpstudy.com/CSharp/CSharp-event.aspx)
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 |