반응형
안녕하세요. 개발남입니다.
알기 쉬운 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<int, int, int> plus = (n1, n2) => n1 + n2;
Console.WriteLine(plus(2, 7));
Func<int, int, float> minus = (n1, n2) => n1 * n2 * 0.5f;
Console.WriteLine(minus(6, 7));
}
}
}
|
반응형
'개발공부 > 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 |