대리자 delegate

[ 2017-08-30 ]

대리자 인스턴스는 이름 그대로 그대로 호출자의 '대리자(대리인)' 역할을 한다.
즉, 호출자가 대리자를 호출하면 대리자가 대상 메서드를 대신 호출해 준다.
이러한 간접 호출에 의해, 호출자와 대상 메서드 사이의 결합(coupling)이 끊어진다.

public class Delegate
{
  delegate int Transformer(int x);
  // static int Square (int x) { return x * x; } 간결 표현
  static int Square(int x) => x * x; 

  static void Main()
  {
     // 대리자 인스턴스를 생성  Transformer t = new Transformer (Square); 이 문장을 줄여서 사용.,
    Transformer t = Square; 
    int result = t(3);      // 대리자 호출  t.Invoke(3)을 줄여 쓴 것
    Console.Write(result);  // 9
  }    
}

대리자는 전통적인 프로그래밍 언어에서 말하는 콜백(callback)과 비슷하다. 콜백은 C의 함수 포인터 같은 지연 호출 수단을 일컫는 일반적인 용어이다.