[C#] 대리자와 delegate, Action, Func
카테고리: C# + Unity
대리자
대리자는 특정 매개 변수 목록 및 반환 형식이 있는 메서드에 대한 참조를 나타내는 형식이다. 쉽게 설명하면, 대리자를 통해 함수를 매개 변수로 전달할 수 있다. 이는 콜백 함수와 같은 이벤트에서 사용한다는 점에서 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());
}
}