>  기사  >  백엔드 개발  >  C# 이벤트 핸들러

C# 이벤트 핸들러

PHPz
PHPz원래의
2024-09-03 15:28:561311검색

C# 프로그래밍 언어의 EventHandler는 의도한 대로 비동기적으로 실행되도록 코더에 의해 프로그래밍된 이벤트를 처리하는 역할을 담당합니다. 모든 프로그래밍 언어에는 고유한 기능과 제한 사항이 있으며, 이벤트 핸들러는 프로그램의 올바른 실행을 위한 훌륭한 기능 중 하나입니다.

우리는 발생하는 모든 이벤트가 하나의 작업이며, 이는 간단한 클릭 버튼 뒤에 기능이 따라오는 것과 같이 다른 작업의 결과라는 것을 알고 있습니다. Delegate는 이벤트 핸들러의 중요한 부분이며 생성 시 이벤트 핸들러 메서드를 지향합니다.

구문:

이제 이벤트 핸들러가 무엇인지 이해했으므로 이에 대해 자세히 알아보겠습니다. 함수나 메소드의 구문은 중요한 부분이며, 이벤트 핸들러 메소드의 간단한 구문은 다음과 같습니다.

public delegate void SimpleEH(int a, int b);
  • 특별한 유형이고 메소드만 나타내는 위임 키워드를 보셨을 것입니다. 그리고 우리가 가지고 있는 두 가지 인수는 객체와 EventArgs이며 목적이 다를 수 있습니다.
  • 위의 이 간단한 대리자는 정수의 두 매개변수를 허용하고 정수를 반환하는 이벤트 처리 방법을 가리키는 기본 작업을 가지고 있습니다. 메소드에 대한 이 구문은 네임스페이스 수준에서 선언될 수 있으며, 이는 중첩된 클래스에서 반복할 필요가 없다는 간단한 규칙을 구현합니다.

C#에서 EventHandler가 어떻게 작동하나요?

C#의 이벤트 핸들러와 해당 구문이 무엇인지 잘 배웠습니다. 그러나 이벤트 핸들러의 작동을 이해하는 것은 더 나은 구현에 도움이 되는 중요한 부분입니다. 프로그램의 모든 이동이나 단계는 이벤트 핸들러에 의해 처리되는 이벤트입니다. 이벤트 핸들러에 대한 메서드가 있으며 대리자는 해당 메서드를 가리키는 데 사용됩니다. 여기서 대리자는 클래스, 인터페이스, 구조, 열거형 및 대리자 다섯 가지 유형 중 어느 유형이든 될 수 있습니다.

이미 구문으로 학습한 대리자의 인스턴스를 만들어야 합니다. 우리가 만든 대리자는 이벤트 핸들러 메서드를 가리키고 있습니다.  여기서 우리는 .NET의 모든 C# 이벤트가 기본적으로 대리자를 기반으로 한다는 점을 기억해야 합니다.

기본적으로 이벤트에 응답하려면 이벤트 수신기 내에서 이벤트 핸들러 메서드를 정의해야 합니다. 더 나은 구현을 위해서는 이벤트를 나타내는 대리자의 서명이 현재 처리 중인 이벤트의 메서드와 일치해야 합니다.

C# EventHandler 구현 예

다음은 언급된 예시입니다.

예시 #1

우리는 이벤트 핸들러 메서드, 구문, 작동 방식을 이해했습니다. 이제 구현으로 넘어갑니다. 여기서는 에디션을 인쇄하고 실행하는 프로그램을 작성하겠습니다.

코드:

using System;
public delegate int EHsample(int a, int b);
class Program {
static void Main() {
Adder a = new Adder();
EHsample instanceEHsample = new EHsample(a.Add);
int sampleOutput = instanceEHsample(4, 3);
Console.WriteLine("\n sampleOutput = {0}", sampleOutput);
}
}
public class Adder {
public int Add(int x, int y)
{ return x + y; }
}

출력:

C# 이벤트 핸들러

설명: 우리는 단순히 시스템을 가져오는 것부터 시작했습니다. 대표자의 선언이 이어졌습니다. 우리는 여기서 구현하는 구문을 이미 이해했습니다. 대리자가 없는 두 개의 인수(정수 a와 b)가 있습니다. 그런 다음 기본 메소드를 사용하여 프로그램 클래스를 작성합니다. 새로운 인스턴스가 포함된 간단한 Adder가 있습니다. 우리는 프로그램에서 Adder 클래스를 추가로 만들었습니다. 그런 다음 대리자에 대한 인스턴스를 만들고 추가하기 위해 adder 인스턴스를 호출했습니다. 그런 다음 두 값(여기서는 4와 3)을 전달했습니다. 마지막으로 print 문이 있습니다. 이 문은 SampleOutput =을 인쇄하고 이어서 전달한 두 값을 추가합니다.

그런 다음 앞서 전달한 값에 대한 추가 작업이 수행되는 공개 클래스 Adder가 있습니다. Add 함수는 두 개의 인수를 가져와 두 인수의 합을 반환하고 이를 출력에 전달합니다. 올바른 출력을 위해서는 아래 스크린샷을 참조하세요.

예시 #2

계속해서 다음 예제에서는 이벤트 핸들러 대리자 메서드를 구현하겠습니다.

코드:

using System;
public delegate void sampleEventHandler();
class Program {
public static event sampleEventHandler _show;
static void Main() {
_show += new sampleEventHandler(Event);
_show += new sampleEventHandler(Handler);
_show.Invoke();
}
static void Event() {
Console.WriteLine("\n Event");
}
static void Handler() {
Console.WriteLine("\n Handler");
}
}

출력:

C# 이벤트 핸들러

설명: 첫 번째 예와 유사하게 명령문을 사용한 다음 대리자 및 기본 메서드가 있는 클래스에 대한 선언을 사용했습니다. 목록에 새 이벤트를 추가하는 메소드 인스턴스를 표시했습니다. 그런 다음 이벤트와 핸들러라는 두 가지 이벤트를 추가합니다. 단순화를 위해 이벤트에 static 한정자를 사용했습니다. 이를 통해 정적 Main 메서드 내에서 이벤트에 직접 액세스할 수 있습니다.

또한 여기에 사용된 +=는 산술연산과 관련이 없습니다. 출력은 아래 스크린샷을 참조하세요.

결론

모든 이벤트는 액션이며 이벤트 핸들러는 해당 이벤트를 적절하게 처리합니다. 대리자에 대한 인스턴스를 만들고 필요할 때 호출합니다. 대리자 인스턴스는 이벤트 핸들러 메서드를 가리킵니다. 이러한 이벤트는 Windows Forms Framework에서 널리 사용되는 이벤트 핸들러이며, 스레딩의 경우 BackGroundWorker 유형을 구현합니다.

위 내용은 C# 이벤트 핸들러의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
이전 기사:C#의 목록 상자다음 기사:C#의 목록 상자