대리자 delegate 에 관한 질문입니다.

자바에도 있는지 모르겠습니다만 C#에서 Action, Func 에 관한 대리자라는 게 있더군요

문제[가 제가 사용할 소스중에 대리자가 나와서 헤매고 있습니다.

MSDN 이나 구글링 해보면 사용법은 나와 있는데 이걸 왜 사용해야 하는지 모르겠더군요

Func delegator = 기존 함수; 혹은

Func delegator = 람다식 등르로 사용하여 좀 하는 거 같습니다.

문제는

Func<클래스명> _session;

클래스 cls = _session?.invoke();

이렇게 사용하던데 무슨 의미인지 알고 싶습니다.

2 Likes

가독성이 떨어져서 안내 문구는 삭제했습니다.

2 Likes

delegate라는 키워드가 여러 방면으로 사용될 수있는데 말씀하신대로 람다식이라고 불리는 익명메서드에 사용할 수 있습니다.

저는 주로 event를 사용할 때 사용합니다.
event는 delegate의 발전형태로, 여러 객체에 퍼져있는 특정 형태의 메서드를 일괄 호출할 때 편리하게 사용할 수 있습니다.

본래라면 객체마다 메서드를 하나씩 하나씩 호출해주어야 하는 것을, 객체 생성 시 메서드를 이벤트 객체에 등록하고 이벤트 객체를 호출하면 구독된 메서드들이 일괄 호출되어서 편리하게 개발할 수 있습니다.

3 Likes

‘?.’ 으로 접근하면 인스턴스가 널일경우 이후 호출 메소드를 무시하고 실행하지 않습니다.

널 체크의 축약이라 보시면 됩니다.

3 Likes

더불어 ? 는 Elvis operator 라고 합니다.
엘비스 프레슬리의 구렛나룻을 따다가 이름 지어졌다고 합니다.

4 Likes