더북(TheBook)

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
신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.