취준/기술면접

델리게이트 (delegate)

빵어 2024. 2. 1. 00:59

델리게이트의 개념

메서드에 대한 참조를 담는 객체로, 메서드 호출을 간접적으로 수행할 수 있음

 

이벤트 처리: 이벤트가 발생하면 델리게이트를 통해 연결된 메소드들이 호출

콜백 함수: 델리게이트를 사용하면 다른 메소드를 호출할 때 콜백 함수를 지정할 수 있음

 

델리게이트는 메소드와 동일한 인자를 가져야 함

 

델리게이트 형식

delegate 반환형 델리게이트명(매개변수, ...);

 

델리게이트 체인

델리게이트 하나로 여러개의 메소드를 한 번에 호출 가능

" += ", "-=" 연산자를 사용하여 델리게이트 추가, 삭제 가능

 

 

이벤트 event

형식: 한정자 event 델리게이트(delegate, action, func) 이벤트명;

특정 클래스 내에서만 사용할 수 있는 델리게이트

event는 델리게이트를 보다 안전하게 사용하기 위한 C#의 기능

외부에서 델리게이트의 구독과 해제만 가능하도록

다른 클래스에서 델리게이트를 직접 호출하거나 재할당하는 것을 방지해 안정성을 높일 수 있음

 

 

delegate event action func의 차이

event는 델리게이트의 보안을 더 강화하기 위해 사용

event만 단독으로 사용했을 경우 인자를 받을 수 없으며,

action과 func는 16개까지 인자를 받을 수 있다.

action과 func는 주로 event와 같이 사용. (action과 func는 '=' 사용이 가능하지만 event와 같이 쓸 경우 +=, -=만 사용가능함)

반환값이 없을 경우 action을 사용하고, 있을 경우 func를 사용한다.