[C# 문법] C# Action 대리자 사용방법


안녕하세요.

 

오늘은 C# 에서 제공하는 Action 대리자 사용하는 방법에 대해서 설명해 드리려고 합니다.

 

[Action 대리자 MSDN 설명]


사용자 지정 대리자를 명시적으로 선언 하지 않고 메서드를 매개 변수로 전달 하도록이 대리자를 사용할 있습니다. 캡슐화 메서드에이 대리자에 의해 정의 되는 메서드 시그니처와 일치 해야 합니다.  매개 변수 반환 값이 없는 캡슐화 메서드를 있어야 한다는 것을 의미 합니다. (C#에서는 메서드 반환 해야 void합니다. Visual Basic 경우에서 정의 되어야 합니다는 Sub...End Sub construct. 또한 무시 되는 값을 반환 하는 메서드입니다.) 일반적으로 이러한 메서드는 작업을 수행 하는 합니다.

 참고

매개 변수가 있으며 값을 반환 하는 메서드를 참조 하려면 제네릭 사용 Func<TResult> 대리자를 대신 합니다.

현재 MSDN에서는 Action 대리자를 위와 같이 설명해 주고 있는데요..

사실 봐도 이해가 잘 되지 않습니다.

 

그냥 바로 예제 코드를 통해서 Action 대리자 사용법을 보시고 필요하실 때 응용하여 사용하시면 될 것 같습니다.


예제 코드


1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

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)

        {

            //Action 대리자 사용법  3가지

 

            //1. 기존 메서드 지정

            Action<string> _action1 = Print;

            _action1("1. 기본 메서드 지정 방식");

 

            //2. 무명 메서드 지정

            Action<stringstring> _action2 = delegate (string msg, string error)

            {

                Console.WriteLine(msg, error);

            };

            _action2("2. 무명 메서드 지정""Inform");

 

            //3. 람다식 사용

            Action<intint> _action3 = (x, y)

                                                => Console.WriteLine("{0} + {1} = {2}",

                                                                       x, y, x + y);

            _action3(48);

        }

 

        public static void Print(string msg)

        {

            Console.WriteLine(msg);

        }

    }

}

 

Colored by Color Scripter

cs


실행 결과



 

참고로, Action 대리자는 최대 파라미터로 16개 까지 받아들일 수 있습니다.


그리고 Action 대리자는 반환값이 없다는게 특징인데요. 반환값이 있는 경우에는 Action 대리자가 아니라 Func 대리자를 사용하면 되는데요.

 

Func 대리자는 다음 포스팅에서 사용방법에 대해서 알려 드리겠습니다.

 

감사합니다.


728x90

이 글을 공유하기

댓글

Designed by JB FACTORY