2010-08-17 3 views
3

델리게이트를 사용하여 콜백 메소드를 호출 할 수 있습니다. 예 :콜백 이벤트가 필요한 이유는 무엇입니까?

공개 대리인 bool ContinueProcessing();

// 나중에 코드에서 우리가 쓸 수

ContinueProcessing은 cp = 새로운 ContinueProcessing (IsDataAvailable);

cp + = new ContinueProcessing (IsTransactionComplete);

// 나중에 방법의 코드 해상력

부울 IsDataAvailable()에서 { 반환 사실; }

bool IsTransactionComplete() { return true; }

cp.Invoke();

위의 호출은 두 개의 부울 메서드를 차례로 호출합니다. "이벤트"가 필요한 이유는 무엇입니까? "이벤트"의 목적은 무엇입니까?

답변

9

이벤트는 서로 간섭하지 않고 서로를 호출 할 수없는 여러 가입자를 가질 수있는 콜백입니다.

대리인은 "이것은 내가 취하고 싶은 조치입니다"라는 캡슐을 제공하고 이벤트는 pub/sub 모델의 캡슐화를 제공합니다.

자세한 내용은 내 article on events을 참조하십시오.

+0

감사합니다. – Ashish

0

참석자는 매우 일반적입니다. 클래스, 클래스, 정적 메서드 등 모든 상황에서 사용할 수 있습니다.

이벤트는보다 구체적입니다. 한 클래스에서 다른 클래스에서 발생한 이벤트를 구독하는 데 사용하도록 특별히 설계되었습니다. .

대리자는 함수에 대한 종류 안전 형 포인터이며 이벤트는 이벤트 구독/구독 취소/발생을위한 표준 인터페이스를 제공하는 대리인 주위의 래퍼입니다.

+0

이벤트는 대리인 주위에 "추가"및 "제거"메서드 만 추가합니다. 우리는 "이벤트"를 언급하지 않고 모든 것을 성취 할 수 있습니다. 왜 대표는 더 일반적인지? – Ashish

+0

대표자는 더 넓은 범위의 시나리오에서 사용할 수 있다는 점에서보다 일반적입니다. 이벤트 구현을 포함하여 델리게이트로 많은 일을 할 수 있지만, 이벤트를 사용하면 이벤트 만 수행 할 수 있습니다. – zvolkov

0

'event'키워드는 인터페이스에 포함될 수있는 델리게이트 선언의 수식어입니다. 선언하는 클래스 내에서 호출되는 제약 조건은 사용자 정의 가능한 접근 자 쌍을 제공합니다 (추가 및 제거) .NET 프레임 워크 내에서 사용되는 경우 대리자의 서명을 강제로 적용합니다.

관련 문제