개발언어/C#

[C#] Func 대리자 사용방법

창용이랑 2023. 5. 22. 13:14
728x90

안녕하세요.

 

오늘은 어제 포스팅 했던 Action 대리자 다음 포스팅으로써, Func 대리자 사용 방법에 대해서 알려 드리려고 합니다.

 

Func 대리자는 Action 대리자와 달리 파라미터 값이 있고, 반환값이 있는데요.

 

[Func 대리자 형태]

 

Func<out TResult>

Func<in T1, out TResult>

Func<in T1,in T2, out TResult>

Func<in T1,in T2,...in T16, out TResult>

 

Func 대리자의 형태는 위와 같습니다. Action 대리자와는 다르게 입력값과 반환값이 있는 것을 보셨나요?

 

제일 오른쪽 끝이 반환값의 타입이고 그 외 파라미터들은 입력 파라미터(매개변수)의 타입들입니다.

 

그럼 위 형태를 이용해서 Func 대리자 예제 프로그램을 작성해 보도록 하겠습니다.

 

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Test0202
{
    class Program
    {
        static void Main(string[] args)
        {
            //Func 대리자 사용법 총 3가지 

            //1. 기존 메서드 지정
            Func<string, string> _func1 = Print;
            Console.WriteLine(_func1("1. 기존 메서드 지정"));

            Func<int, int, int> _func2 = Sum;
            string msg = string.Format("x + y = {0} 입니다.", _func2(4, 8));
            Console.WriteLine(msg);

            //2. 무명 메서드 지정
            Func<int, int, int> _func3 = delegate (int x, int y)
            {
                return x + y;
            };

            string msg2 = string.Format("x + y = {0}", _func3(5, 10));
            Console.WriteLine(msg2);

            //3. 람다식 사용
            Func<int, string> _func4 = x => { return "반환값은 : " + x + " 입니다."; };
            Console.WriteLine(_func4(100));
        }

        public static string Print(string msg)
        {
            return msg;
        }

        public static int Sum(int x, int y)
        {
            return x + y; 
        }
    }
}

실행 결과

 

 

이로써 Func 대리자 사용 방법에 대해서 알아 보았습니다.

 

감사합니다.^^

 

출처 : https://afsdzvcx123.tistory.com/entry/C-%EB%AC%B8%EB%B2%95-C-Func-%EB%8C%80%EB%A6%AC%EC%9E%90-%EC%82%AC%EC%9A%A9%EB%B0%A9%EB%B2%95