반응형

 

안녕하세요. 개발남입니다. 

 

알기 쉬운 C#  Action, Func입니다.

 

델리게이트를 생성하기 위해 필요한 델리게이트 형태에 맞춰서 미리 선언해줘야하는데,
만약 무명 메소드로 잠깐 사용하거나 델리게이트 형태가 많은 경우 모두 선언해줘야하는 불편함이있습니다.
C#에서는 이런 불편함을 없애기위해 Func와 Action delegate가 미리 선언되어있습니다.

Action - 매개 변수를 0~16개 가질 수 있는 값을 반환하지 않는 메서드를 캡슐화
Func - 매개 변수를 0~16개를 가질 수 있는 값을 반환하는 메서드를 캡슐화


형태
Action
public delegate void Action<입력 매개변수> (매개변수);

Func
public delegate 반환형 Func<입력 매개변수,반환형> (매개변수);

 

예제
Action

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
 
namespace ConsoleApplication1
{
 
    class Program
    {
        static void Main(string[] args)
        {
            Action output1 = () => Console.WriteLine("AAAA");
            output1();
 
            Action<int> output2 = (v) => Console.WriteLine(v);
            output2(2);
        }
    }
}
 
 

Func

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
 
namespace ConsoleApplication1
{
    delegate void DelegateParameterTwo(int n1, int n2);
 
    class Program
    {
        static void Main(string[] args)
        {
            Func<int> value = () => 2+8;
            Console.WriteLine(value());
            Func<intintint> plus = (n1, n2) => n1 + n2;    
            Console.WriteLine(plus(27));
            Func<intintfloat> minus = (n1, n2) => n1 * n2 * 0.5f; 
            Console.WriteLine(minus(67));
        }
    }
}
 
 

 

반응형

'개발공부 > C#' 카테고리의 다른 글

[C#] #region  (0) 2019.10.27
[C#] 익명 타입(Anonymous Types)  (0) 2019.10.23
[C#] 람다식(Lambda expressions)  (0) 2019.10.21
[C#] 무명 메서드(anonymous method)  (0) 2019.10.20
[C#] 제네릭  (0) 2019.10.19

+ Recent posts