기초 메모지

C# - 델리게이트(Delegate)와 Action<T>, Func<T> 본문

Languages/C#

C# - 델리게이트(Delegate)와 Action<T>, Func<T>

라큐브 2022. 7. 4. 02:59

델리게이트(Delegate)

일반적인 델리게이트(Delegate) 사용법은 아래 코드와 같습니다.

namespace Post
{
    1.델리게이트를 선언합니다.
    delegate void TestDelegate(int Number);
    
    class Delegate
    {
        2. 델리게이트 인스턴스를 만들어 메서드 주소를 할당합니다.
    	var InstanceDelegate = new TestDelegate(Write);
        3. 델리게이트를 호출합니다.
        InstanceDelegate(1234);
        // 1234
    }
    
    void Write(int Number)
    {
       Console.WriteLine(Number);
    }
}

1. 델리게이트를 선언합니다.

2. 델리게이트 인스턴스를 만들어 메서드 주소를 할당합니다.

3. 델리게이트를 호출합니다.

델리게이트를 간결하게  사용할 수 없을까??

Action<T>,  Func<T> 을 이용하여 간결하게 표현할 수 있습니다. 

미리 정의된 델리게이트를 사용하면 명시적으로 델리게이트를 선언하지 않아도 됩니다.

 

namespace Post
{
    //delegate void TestDelegate(int Number);
    internal class Delegate
    {
        static void main(string[] args)
        {
            // 명시적으로 델리게이트 선언하지 않고 델리게이트를 사용. 
            Action<int> test = new Action<int>(Write);
            test(1234);
            // 1234
        }

        static void Write(int Number)
        {
            Console.WriteLine(Number);
        }
    }
}

Action, Func 차이점

Action<T> Func<T,TResult>
반환 값 없음 반환 값 있음

Action<T> : 반환 값이 없어 입력 타입만 있습니다.

Func<T,TResult> : 반환 값이 있어 입력 타입과 반환 타입이 있습니다.

반응형
Comments