C# = 객체지향 언어 ( + 함수지향형 언어의 특징 )
함수지향형 언어 특징 ?
C언어의 함수 포인터에 해당하는 기능이 존재 ( + 강화)
대리자 (Delegate)
메서드의 위치를 가지고 있으며 그 메서드를 대신 실행해 주는 역할
언제 사용 ? 해당 메서드를 직접 호출할 수 없는 경우
(외부 어셈블리에 있다던가, 해당 메서드가 private인 경우, 호출해야 하는 메서드가 런타임 도중 동적으로 바뀌는 경우 등...)
예제 코드)
9번째 줄 : int형 매개변수를 2개 받고 int 형으로 반환하는 함수형에 DelegateMethod라고 이름짓겠다. 즉, 붕어빵 틀을 만든 것.
18번째 줄 : 그 붕어빵 틀에 Average라는 반죽을 넣으니 딱 맞음 (형 맞췄으니까)
29번째 줄 : method(a,b)가 하이라이트
method가 Average의 정보를 가지고 있으니까 Average 메서드가 실행 됨.
이렇기에 대리자 라는 이름을 쓰는 것.!!
* 하나의 Delegate가 여러 메서드를 안고 있다가 연쇄적으로 한번에 실행 가능 (연쇄 호출)
(단, 반환형이 void 일때만 가능)
중간에 뺄 수도 있음
* 대리자 개념을 통해 탄생한 것이 '이벤트'
'.NET' 카테고리의 다른 글
기본문법 - 무명 메서드 / 람다식 (0) | 2016.06.21 |
---|---|
ASP.NET inherits의미 (0) | 2016.01.07 |