[C#] Delegate And Func

Delegate and Func

  • .NET Framework에는 총 17 가지의 Func 델리게이트가 준비 되어있다.
  • 매개 변수가 없는 메소드부터 매개 변수가 16개인 메소드까지 총 17개의 메소드를 참조 가능.
  • 무명 메소드 뿐만 아니라 일반 메소드도 참조 가능.
  • Func 델리게이트로 메소드를 참조하면 전처럼 델리게이트 타입을 선언하는 과정이 불필요 해지므로 아주 간결하게 코드를 작성할 수 있다.

/**
 * @file    ExamFuncDelegate01.cs
 * @brief   델리게이트와 Func.
 * @details 델리게이트와 Func 사용 예제.
 * @version  0.0.1
 */
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace StudyCSharp_Bong9
{
    namespace ExamFuncDelegate01
    {
        /**
         * @brief    델리게이트와 Func 예제 클래스.
         * @details  Func와 Action은 미리 선언된 델리게이트 변수로써 별도의 선언없이 사용이 가능. Func는 반환값이 있는 메소드를 참조하는 델리게이트 변수, Action은 반환값이 없는 메소드를 참조하는 델리게이트 변수.
         * @author   김봉재.
         * @date     2014-08-07
         */
        class ExamFuncDelegate
        {
            static float temp (int a, int b, int c)
            {
                return (a + b + c) * 0.1f;
            }

            static void Main(string[] args)
            {
                Func float             func0 = () => 0.1f;
                Func int, float        func1 = (a) => a * 0.1f;
                Func int, int, float>   func2 = (a, b) => (a+b) * 0.1f;

                Func<span id="mce_SELREST_start" style="overflow:hidden;line-height:0;">&#65279;</span>&lt;int, int, int, float func3;
                func3 = new Func int, int, int, float(temp);

                Console.WriteLine(&quot;func0 반환값: {0}&quot;, func0());
                Console.WriteLine(&quot;func1 반환값: {0}&quot;, func1(10));
                Console.WriteLine(&quot;func2 반환값: {0}&quot;, func2(10,10));
                Console.WriteLine(&quot;func3 반환값: {0}&quot;, func3(10,10,10));
            }
        }
    }
}

답글 남기기

아래 항목을 채우거나 오른쪽 아이콘 중 하나를 클릭하여 로그 인 하세요:

WordPress.com 로고

WordPress.com의 계정을 사용하여 댓글을 남깁니다. 로그아웃 /  변경 )

Google photo

Google의 계정을 사용하여 댓글을 남깁니다. 로그아웃 /  변경 )

Twitter 사진

Twitter의 계정을 사용하여 댓글을 남깁니다. 로그아웃 /  변경 )

Facebook 사진

Facebook의 계정을 사용하여 댓글을 남깁니다. 로그아웃 /  변경 )

%s에 연결하는 중

This site uses Akismet to reduce spam. Learn how your comment data is processed.