Computer >> 컴퓨터 >  >> 프로그램 작성 >> C#

C#에서 대리자와 이벤트의 차이점 - 2020 - 다른 사람


이 게시물에서는 C#에서 델리게이트와 이벤트의 차이점을 이해할 것입니다.

대리인

  • 'delegate' 키워드를 사용하여 선언할 수 있습니다.

  • 함수 포인터입니다.

  • 런타임 동안 하나 이상의 메서드에 대한 참조를 보유합니다.

  • 독립적인 키워드입니다.

  • 이벤트에 의존하지 않습니다.

  • 여기에는 호출 목록에 메서드를 추가하는 데 도움이 되는 Combine() 및 Remove() 메서드가 포함되어 있습니다.

  • 메소드에 매개변수로 전달할 수 있습니다.

  • '=' 연산자를 사용하여 단일 메서드를 할당할 수 있습니다.

  • '+=' 연산자를 사용하여 대리자에 여러 메서드를 할당할 수 있습니다.

이벤트

  • 'event' 키워드를 사용하여 선언할 수 있습니다.

  • 델리게이트에 의존하는 알림 메커니즘으로 정의할 수 있습니다.

  • 대리인에 따라 다릅니다.

  • 대리인 없이는 만들 수 없습니다.

  • 대리자 인스턴스를 감싸는 래퍼로 이해할 수 있습니다.

  • 이렇게 하면 델리게이트 사용자가 델리게이트 및 해당 호출 목록을 재설정하는 것을 방지할 수 있습니다.

  • 호출 목록에서만 대상을 추가하거나 제거할 수 있습니다.

  • 'EventInfo' 클래스는 이벤트를 검사하고 이벤트 핸들러를 바인딩하는 데 도움이 됩니다.

  • 이러한 핸들에는 각각 호출 목록에 메서드를 추가 및 제거하는 데 도움이 되는 AddEventHandler() 및 RemoveEventHandler()와 같은 메서드가 포함됩니다.

  • 이벤트가 발생할 수 있지만 메서드에 매개변수로 전달할 수는 없습니다.

  • '=' 연산자는 이벤트와 함께 사용할 수 없습니다.

  • '+=' 및 '-=' 연산자는 각각 이벤트 핸들러를 추가하거나 제거하는 이벤트와 함께 사용할 수 있습니다.

  • 이러한 메서드는 내부적으로 AddEventHandler 및RemoveEventHandler와 같은 메서드를 호출합니다.