본문 바로가기
개발언어/C#

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

by 창용이랑 2023. 5. 22.
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