Computer >> 컴퓨터 >  >> 프로그래밍 >> C#

C# 이벤트(Event)란 무엇인가? 개념부터 실전 예제까지

C# 이벤트란?

이벤트(Event)는 키 입력, 마우스 클릭, 마우스 이동 등과 같은 사용자 동작 또는 시스템에서 발생하는 알림과 같은 특정 사건을 의미합니다.

C#에서 이벤트는 클래스 내부에서 선언되고 발생(raise)되며, 델리게이트(delegate)를 사용하여 같은 클래스 또는 다른 클래스에 정의된 이벤트 핸들러와 연결됩니다. 이때 이벤트를 포함하고 있는 클래스는 해당 이벤트를 외부에 게시(publish)하는 역할을 담당합니다.

즉, 이벤트 모델은 게시자(Publisher)구독자(Subscriber) 구조로 동작하며, 특정 상황이 발생했을 때 미리 등록해 둔 메서드가 자동으로 호출되도록 하는 메커니즘입니다.

이벤트 선언 방법

클래스 내부에서 이벤트를 선언하려면 먼저 해당 이벤트에 사용할 델리게이트 타입을 선언해야 합니다.

public delegate string myDelegate(string str);

델리게이트가 준비되면 다음과 같이 event 키워드를 사용하여 이벤트를 선언합니다.

event myDelegate newEvent;

C# 이벤트 사용 예제

아래 예제는 델리게이트와 이벤트를 함께 사용하여 사용자 환영 메시지를 출력하는 프로그램입니다.

using System;

namespace Demo {
    public delegate string myDelegate(string str);

    class EventProgram {
        // 이벤트 선언
        event myDelegate newEvent;

        public EventProgram() {
            // 생성자에서 이벤트 핸들러 등록
            this.newEvent += new myDelegate(this.WelcomeUser);
        }

        // 이벤트 핸들러 메서드
        public string WelcomeUser(string username) {
            return "Welcome " + username;
        }

        static void Main(string[] args) {
            EventProgram obj1 = new EventProgram();
            string result = obj1.newEvent("My Website!");
            Console.WriteLine(result);
        }
    }
}

실행 결과

Welcome My Website!

코드 설명

위 예제의 동작 흐름은 다음과 같습니다.

1. myDelegate라는 이름의 델리게이트 타입을 선언하여 문자열을 받아 문자열을 반환하는 메서드 시그니처를 정의합니다.
2. EventProgram 클래스 내부에 newEvent라는 이벤트를 선언합니다.
3. 생성자에서 += 연산자를 사용하여 WelcomeUser 메서드를 이벤트 핸들러로 등록합니다.
4. Main 메서드에서 객체를 생성하고 이벤트를 호출하면, 등록된 핸들러가 실행되어 환영 메시지가 출력됩니다.

이처럼 C#의 이벤트는 델리게이트를 기반으로 하여, 특정 동작이 발생했을 때 원하는 코드를 유연하게 실행할 수 있도록 해주는 강력한 기능입니다. GUI 프로그래밍이나 비동기 처리 등 다양한 분야에서 폭넓게 활용됩니다.