- 메서드 자체를 값으로 갖는 타입의 인스턴스 생성
- C/C++만 아는 사람에겐 함수 포인터의 의미로 다가옴
- 일어난 일과 그 일에 대한 다음 처리를 분리
- delegate를 사용하는 경우
- 이벤트 디자인 패턴을 사용
- 정적 메서드를 캡슐화해야 하는 경우
- 메서드를 구현하는 개체에 대한 다른 속성 메서드 또는 인터페이스에 호출자가 액세스할 필요가 없을 때
- 쉽게 작성
- 메서드에 대한 여러 구현이 클래스에 필요한 경우
- 인터페이스를 사용하는 경우
- 호출할 수 있는 관련 메서드의 그룹이 있는 경우
- 클래스에 메서드의 구현이 하나만 필요한 경우
- 인터페이스를 사용하는 클래스에서 이 인터페이스를 다른 인터페이스나 클래스 형식에 캐스팅하려는 경우
- 비교 메서드의 경우와 같이 구현하려는 메서드가 클래스의 형식이나 동일성 여부와 관련되어 있는 경우
Non-static 메서드를 인자로 타입의 인스턴스
- 35번 라인: 이벤트에 test.ActuallyRun 메서드를 인자로 하는 타입의 인스턴스 delegate(대리자)를 연결
- 36번 라인: EvenTrigger로 이벤트 발생하고 delegate로 인해 ActuallyRun 실행