이 게시물에서는 C#에서 델리게이트와 이벤트의 차이점을 이해할 것입니다.
대리인
-
'delegate' 키워드를 사용하여 선언할 수 있습니다.
-
함수 포인터입니다.
-
런타임 동안 하나 이상의 메서드에 대한 참조를 보유합니다.
-
독립적인 키워드입니다.
-
이벤트에 의존하지 않습니다.
-
여기에는 호출 목록에 메서드를 추가하는 데 도움이 되는 Combine() 및 Remove() 메서드가 포함되어 있습니다.
-
메소드에 매개변수로 전달할 수 있습니다.
-
'=' 연산자를 사용하여 단일 메서드를 할당할 수 있습니다.
-
'+=' 연산자를 사용하여 대리자에 여러 메서드를 할당할 수 있습니다.
이벤트
-
'event' 키워드를 사용하여 선언할 수 있습니다.
-
델리게이트에 의존하는 알림 메커니즘으로 정의할 수 있습니다.
-
대리인에 따라 다릅니다.
-
대리인 없이는 만들 수 없습니다.
-
대리자 인스턴스를 감싸는 래퍼로 이해할 수 있습니다.
-
이렇게 하면 델리게이트 사용자가 델리게이트 및 해당 호출 목록을 재설정하는 것을 방지할 수 있습니다.
-
호출 목록에서만 대상을 추가하거나 제거할 수 있습니다.
-
'EventInfo' 클래스는 이벤트를 검사하고 이벤트 핸들러를 바인딩하는 데 도움이 됩니다.
-
이러한 핸들에는 각각 호출 목록에 메서드를 추가 및 제거하는 데 도움이 되는 AddEventHandler() 및 RemoveEventHandler()와 같은 메서드가 포함됩니다.
-
이벤트가 발생할 수 있지만 메서드에 매개변수로 전달할 수는 없습니다.
-
'=' 연산자는 이벤트와 함께 사용할 수 없습니다.
-
'+=' 및 '-=' 연산자는 각각 이벤트 핸들러를 추가하거나 제거하는 이벤트와 함께 사용할 수 있습니다.
-
이러한 메서드는 내부적으로 AddEventHandler 및RemoveEventHandler와 같은 메서드를 호출합니다.