> 백엔드 개발 > C#.Net 튜토리얼 > C# 대리자 및 이벤트 설명

C# 대리자 및 이벤트 설명

高洛峰
풀어 주다: 2016-12-14 11:17:50
원래의
1327명이 탐색했습니다.

서문에서 커미션과 이벤트의 중요성에 대해 어느 정도 이해하셨을 텐데요. 지금은 아직 모호할 수 있지만 제 모국어 시리즈에서는 이러한 개념을 쉽게 이해할 수 있도록 하겠습니다. 우선 위탁에 대해 이야기해보자. 예를 들어 샤오밍이 샤오장에게 티켓 구매를 맡긴 경우를 제외하고는 모든 중국 사람들이 이 의미를 알아야 한다.

하지만 우리 프로그래밍 세계에서는 그게 그렇게 간단할까요? 물론 OO란 무엇일까요? OO는 현실 세계의 추상화입니다. 현실 세계의 모든 것은 OO에서 잘 해석될 수 있습니다. 죄송합니다.

그럼 바로 들어가겠습니다. 학생들이 불편하다고 생각하지 않는다면 인터넷에서 중국어와 영어로 된 GreetingPeople 예제를 살펴보세요.

첫 번째는 C# 구문입니다.

public delegate void BugTicketEventHandler();
로그인 후 복사

대리자는 키워드입니다. [참고: EventHandler는 위임을 선언하는 Microsoft C#의 명명 표준입니다. 가능합니다. 이 명명 습관은 가능한 한 빨리 개발해야합니다 】

그게 위임입니다. 그렇게 간단합니다. 일반적인 방법과 차이점이 무엇인지 볼까요? <… 그 자신은 아무것도 하지 않습니다.

public void BuyTicket()
{   
 方法体
 }
로그인 후 복사
그럼 샤오밍이 샤오장에게 티켓 구매를 맡긴 실제 장면을 살펴볼까요?

BugTicketEventHandler myDelegate = new BugTicketEventHandler(MrZhang.BuyTicket);

代码 

Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/-->//小张类
    public class MrZhang
    {
        //其实买车票的悲情人物是小张
        public static void BuyTicket()
        {
            Console.WriteLine("NND,每次都让我去买票,鸡人呀!");
        }
    }

    //小明类
    class MrMing
    {
        //声明一个委托,其实就是个“命令”
        public delegate void BugTicketEventHandler();

        public static void Main(string[] args)
        {
            //这里就是具体阐述这个命令是干什么的,本例是MrZhang.BuyTicket“小张买车票”
            BugTicketEventHandler myDelegate = new BugTicketEventHandler(MrZhang.BuyTicket);

            //这时候委托被附上了具体的方法
            myDelegate();
            Console.ReadKey();
        }
    }
로그인 후 복사
델리게이트 선언 메소드입니다. BugTicketEventHandler(델리게이트 메소드)를 추가해야 합니다. 대리자 생성자가 비어 있지 않기 때문입니다.

참고: 대리자의 매개변수와 반환 유형은 위임하려는 특정 메서드와 일치해야 합니다. 예:

public 대리자 void BugTicketEventHandler();

public static void BuyTicket()

{

Console.WriteLine("NND, 매번 티켓을 사게 해주세요, 치킨맨!");
}


학생들은 이것을 소화하고 잠시 휴식을 취하세요. 위임 체인의 개념에 대해 간단히 이야기해 보겠습니다.

실제로 위임 체인도 매우 간단합니다. 티켓을 구매한 후 그에게 영화 티켓을 가져오라고 요청할 수 있습니다.

우리 프로그램 세계의 표현은 다음과 같습니다.

사실 우리는 프로그램에 myDelegate +를 추가했습니다. = MrZhang.BuyMovieTicket;

관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿