YUDA't

* 델리게이터

0. 메서드를 변수로 사용하는 개념(메서드를 대신 호출해준다. 메서드의 대리인)

1. 일종의 클래스를 선언하는 것과 같다.

delegate noid TestDelegate(); //자료형 선언

TestDelegate testDelegate = <메서드 이름, 무명 델리게이터, 람다> //델리게이터 변수를 초기화



* 무명 델리게이터

0. 델리게이터와 같은 기능을 수행하지만 메서드를 따로 선언하지 않고도 정렬 방법을 정의한다.

delegate(<매개변수>, <매개변수>)

{

/* 코드 */

return /* 반환 */;

}



* 람다

0. 매개변수의 자료형을 지정할 필요도 없이 사용한다.

(<매개변수>, <매개변수>) => {

/* 코드 */

return /* 반환 */;

}

1. 만약 입력할 코드가 없고 반환만 한다면 더 짧게도 구현 가능하다.

(a, b) => /* 반환 */


products.Sort((a, b) => a.Price.CompareTo(b.Price));


* 델리게이터 선언

0. 이름있는 델리게이터는 특정한 형식을 가진 메서드를 자료형으로 선언

[접근 제한자] delegate [반환형] [델리게이터 이름]([매개변수]);

1. 델리게이터는 자료형이므로 클래스를 선언하는 위치와 같은 위치라면 어디든지 선언 가능하다.

2. 델리게이터는 클래스 외부에서도 선언 가능하다.



* 델리게이터 초기화

0. 메서드 이름을 사용한 초기화

TestDelegate delegateA = TestMethod;

1. 무명 델리게이터를 사용한 초기화

TestDelegate delegateB = delegate(){};

2. 람다를 이용한 초기화

TestDelegate delegateC = () => {};

3. 초기화한 델리게이터들은 일반 메서드처럼 호출해서 사용할 수 있다.

delegateA();

delegateB();

delegateC();


* 델리게이터 활용

0. 델리게이터를 활용하는 대표적인 형태는 콜백 메서드(Callback Method)이다.

1. 콜백 메서드는 매개변수로 전달하는 메서드이다.