.Net 3.5 이상부터 지원되는 Func<T, T Result> 를 사용하면 함수를 인자로 넘길 수 있습니다.
무슨 말인고 하니 함수를 콜 하였는데 그 함수 내부에서 다른 쪽의 함수를 실행해야 하는 경우가 있습니다.
이해를 돕기 위해 예문을 추가합니다.
using System; namespace test1019 { class Program { static void Main(string[] args) { ClassA ca = new ClassA(); ca.AA(BB); // 함수 BB 를 AA의 인자로 넘깁니다 Console.WriteLine("Press any key to continue."); Console.ReadKey(); } public static bool BB() { // do something... Console.WriteLine("BB"); return true; // T Result 때문에 임의의 리턴값을 설정. 특별한 의미는 없다. } class ClassA { public void AA(Func<bool> func) { // do something Console.WriteLine("AA"); func(); // AA 수행 중 클래스 바깥에 있는 BB()를 실행 } } } }
리턴타입이 void 형인 함수는 넘길수 없다는 것에 유의해 주세요.
Func<T, T Result> 가 인자 T는 생략이 가능하지만 T Result 인자는 생략이 안됩니다.
MSDN 링크 입니다.
https://msdn.microsoft.com/ko-kr/library/bb549151(v=vs.110).aspx