Func Delegate

홈 > 공유팁! > 프로그램 관련
프로그램 관련

Func<T, TResult> Delegate

꽁스짱 0 958
.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;
}

 
0 Comments
제목