Func<T, TResult> Delegate
꽁스짱
C#
0
124
2021.04.13 02:28
.NET의 Func<T> delegate는 Action delegate와 비슷한데, Action이 리턴값이 없는 경우 사용되는 반면, Func는 반드시 리턴 타입이 - Generic 폼 내에, 즉 템플린 파라미터 안에 - 존재한다. 즉, Func<T>의 T는 리턴값의 타입을 가리키며, 이 경우 입력파라미터는 없다 (일반적으로 T를 입력과 구분하기 위해 TResult로 표현한다). Action과 마찬가지로 입력 파라미터수에 따라 여러 변형이 존재하는데, 입력이 1개인 경우 Func<T, TResult>, 입력이 2개인 경우 Func<T1, T2, TResult> 를 사용한다. Action 과 같이 16개까지 입력파라미터를 받아 들일 수 있다.
예제
//---------------------
// 예제 1
// Func<TResult>
// 입력: 없음
// 리턴: TResult 타입
//---------------------
public void Run()
{
// 메서드 지정
System.Func<bool> f = IsValid;
bool result = f();
// 무명 메서드 지정
Func<bool> fa = delegate
{
return _state == 0;
};
result = fa();
// 람다식 이용
Func<bool> fb = () => _state == 0;
result = fb();
}
bool IsValid()
{
return _state == 0;
}
//---------------------
// 예제 2
// Func<T1, TResult>
// 입력: 1개
// 리턴: TResult 타입
//---------------------
public void Run1()
{
// 메서드 지정
System.Func<int, bool> f = IsValidRange;
bool result = f(10);
// 무명 메서드 지정
Func<int, bool> fa = delegate(int n)
{
return n > 0;
};
result = fa(-1);
// 람다식 이용
Func<int, bool> fb = n => n > 0;
result = fb(-2);
}
bool IsValidRange(int n)
{
return n > 0;
}