다음을 통해 공유


event(C# 참조)

업데이트: 2007년 11월

event 키워드는 게시자 클래스에서 이벤트를 선언하는 데 사용합니다.

예제

다음 예제에서는 EventHandler를 내부 대리자 형식으로 사용하는 이벤트를 선언하고 발생시키는 방법을 보여 줍니다. 제네릭 EventHandler<TEventArgs> 대리자 형식을 사용하는 방법과 이벤트를 구독하고 이벤트 처리기 메서드를 만드는 방법도 보여 주는 전체 코드 예제는 방법: .NET Framework 지침을 따르는 이벤트 게시(C# 프로그래밍 가이드)를 참조하십시오.

public class SampleEventArgs
{
    public SampleEventArgs(string s) { Text = s; }
    public String Text {get; private set;} // readonly
}
public class Publisher
{
    // Declare the delegate (if using non-generic pattern).
    public delegate void SampleEventHandler(object sender, SampleEventArgs e);

    // Declare the event.
    public event SampleEventHandler SampleEvent;

    // Wrap the event in a protected virtual method
    // to enable derived classes to raise the event.
    protected virtual void RaiseSampleEvent()
    {
        // Raise the event by using the () operator.
        SampleEvent(this, new SampleEventArgs("Hello"));
    }
}

이벤트는 해당 이벤트가 선언된 클래스나 구조체(게시자 클래스)에서만 호출할 수 있는 특수한 종류의 멀티캐스트 대리자입니다. 다른 클래스나 구조체가 이벤트를 구독할 경우 해당 이벤트 처리기 메서드는 게시자 클래스에서 이벤트를 발생시킬 때 호출됩니다. 자세한 내용 및 코드 예제를 보려면 이벤트(C# 프로그래밍 가이드)대리자(C# 프로그래밍 가이드)를 참조하십시오.

이벤트는 public, private, protected, internal 또는 protectedinternal로 표시할 수 있습니다. 이러한 액세스 한정자는 클래스 사용자가 이벤트에 액세스하는 방식을 정의합니다. 자세한 내용은 액세스 한정자(C# 프로그래밍 가이드)를 참조하십시오.

키워드 및 이벤트

이벤트에는 다음 키워드를 적용할 수 있습니다.

키워드

설명

자세한 내용

static

클래스의 인스턴스가 없어도 언제든지 호출자가 이벤트를 사용할 수 있습니다.

정적 클래스 및 정적 클래스 멤버(C# 프로그래밍 가이드)

virtual

파생 클래스에서 override 키워드를 사용하여 이벤트 동작을 재정의할 수 있습니다.

상속(C# 프로그래밍 가이드)

sealed

파생 클래스에 대해 더 이상 virtual이 아님을 지정합니다.

 

abstract

컴파일러에서는 add 및 remove 이벤트 접근자 블록을 생성하지 않으므로 파생 클래스에서 고유한 구현을 제공해야 합니다.

 

static 키워드를 사용하면 이벤트를 정적 이벤트로 선언할 수 있습니다. 이렇게 하면 클래스의 인스턴스가 없어도 언제든지 호출자가 이벤트를 사용할 수 있습니다. 자세한 내용은 정적 클래스 및 정적 클래스 멤버(C# 프로그래밍 가이드)를 참조하십시오.

virtual 키워드를 사용하면 이벤트를 가상 이벤트로 표시할 수 있습니다. 이렇게 하면 파생 클래스에서 override 키워드를 사용하여 이벤트 동작을 재정의할 수 있습니다. 자세한 내용은 상속(C# 프로그래밍 가이드)을 참조하십시오. 가상 이벤트를 재정의하는 이벤트는 sealed 이벤트가 될 수도 있습니다. 이렇게 하면 파생 클래스에 대해 이 이벤트가 가상 이벤트가 아닌 것으로 지정됩니다. 마지막으로, 이벤트를 abstract로 선언할 수 있습니다. 이렇게 하면 컴파일러에서 add 및 remove 이벤트 접근자 블록이 생성되지 않습니다. 따라서 파생 클래스에서 자체 구현을 제공해야 합니다.

C# 언어 사양

자세한 내용은 C# 언어 사양의 다음 단원을 참조하십시오.

  • 1.6.6.4 이벤트

  • 7.16.3 이벤트 할당

  • 10.8 이벤트

  • 13.2.3 인터페이스 이벤트

참고 항목

작업

방법: 대리자 조합(멀티캐스트 대리자)(C# 프로그래밍 가이드)

개념

C# 프로그래밍 가이드

참조

C# 키워드

한정자(C# 참조)

기타 리소스

C# 참조