Func<T> 대리자 사용하기
Func<매개변수형식, 반환값형식>으로 특정 메서드 또는 익명 메서드를 대신 호출할 수 있는 대리자 개체를 만들 수 있습니다. Func<T>의 가장 오른쪽 T는 반환값을 나타냅니다. 다음 코드는 Math.Abs() 메서드를 대신 호출하는 abs()를 만듭니다.
> Func<int, int> abs = Math.Abs; > abs(-10) 10
다음 코드는 입력 매개변수를 2개 받는 Math.Pow() 메서드를 대신 호출하는 pow() 함수를 만듭니다.
> Func<double, double, double> pow = Math.Pow; > pow(2, 20) 1048576
다음 코드는 문자열을 입력받으면 해당 문자열을 소문자로 변환한 후 반환하는 toLower 대리자를 만듭니다.
> Func<string, string> toLower = str => str.ToLower(); . Console.WriteLine(toLower("LambdaExpression")); lambdaexpression
Func 대리자와 람다 식을 사용하면 LINQ처럼 C#에서 함수형 프로그래밍 스타일로 개발할 수 있습니다.
Func 대리자는 이미 있는 메서드 이외에 익명 메서드 및 람다 식을 담아 사용할 수 있습니다.
> Func<int, int> anonymous = delegate (int x) { return x * x; }; //① 익명 메서드 담기 > anonymous(2) 4 > Func<int, double> lambda = x => x / (double)2; //② 람다 식 담기 > lambda(3) 1.5