카테고리:

2 분 소요

대리자

대리자는 특정 매개 변수 목록 및 반환 형식이 있는 메서드에 대한 참조를 나타내는 형식이다. 쉽게 설명하면, 대리자를 통해 함수를 매개 변수로 전달할 수 있다. 이는 콜백 함수와 같은 이벤트에서 사용한다는 점에서 C++의 함수 포인터와 유사하지만, 멤버 함수에 대해 완전히 개체 지향이라는 점에서 다르다.

매개변수로는 상황에 따라 Action이나 Func를 사용한다. 매개 변수가 없으며 값을 반환하지 않는 경우에는 Action을 사용하고, 이외의 경우에는 모두 Func<TResult>를 사용한다.

1. Action과 delegate를 사용하는 경우

예를 들어 아래와 같은 경우를 볼 수 있다.

using System;
using System.Windows.Forms;

public class Name {
   private string instanceName;

   public Name(string name) {
      this.instanceName = name;
   }

   public void DisplayToWindow() {
      MessageBox.Show(this.instanceName);
   }
}

public class testTestDelegate {
   public static void Main( {
      Name testName = new Name("Koani");
      Action showMethod = testName.DisplayToWindow;
      showMethod();
      
      Action showMethod2 = delegate() { testName.DisplayToWindow();} ;
      showMethod2();
   }
}

2. Func과 delegate를 사용하는 경우

예를 들어 아래와 같은 경우를 볼 수 있다.

using System;
using System.Windows.Forms;

public class Name {
   private string instanceName;

   public Name(string name) {
      this.instanceName = name;
   }

   public string DisplayToWindow() {
      return this.instanceName;
   }
}

public class testTestDelegate {
   public static void Main( {
      Name testName = new Name("Koani");
      Func<string> showMethod = testName.DisplayToWindow;
      Console.WriteLine(showMethod());
      
      Func<string> showMethod2 = delegate() { return "Syudal"; };
      Console.WriteLine(showMethod2());
   }
}

태그: Action, delegate, func, 대리자, 함수포인터

업데이트: