C#에서 Action과 Func는 모두 대리자(delegate) 타입으로, 특정 메서드를 참조하는 기능을 제공합니다. 두 타입 모두 람다 표현식을 사용하여 쉽게 정의할 수 있습니다.
Action
- 반환 값 없음: Action은 반환 값이 없는 메서드를 참조합니다.
- 입력 매개변수: 최대 16개의 입력 매개변수를 받을 수 있습니다.
- 주요 용도: 주로 어떤 작업을 수행하지만, 결과를 반환하지 않는 경우에 사용됩니다.
Action<int, int> sumAction = (a, b) => Console.WriteLine(a + b);
sumAction(3, 4); // 출력: 7
여기서 Action<int, int>는 두 개의 정수를 입력받고, 결과를 출력하는 메서드를 나타냅니다. 반환 값은 없습니다.
Func
- 반환 값 있음: Func는 값을 반환하는 메서드를 참조합니다.
- 입력 매개변수: 최대 16개의 입력 매개변수를 받을 수 있으며, 마지막 타입 매개변수는 반환 타입을 나타냅니다.
- 주요 용도: 입력을 받아 특정 결과를 계산하거나 반환할 때 사용됩니다.
Func<int, int, int> sumFunc = (a, b) => a + b;
int result = sumFunc(3, 4); // result: 7
여기서 Func<int, int, int>는 두 개의 정수를 입력받아 정수를 반환하는 메서드를 나타냅니다.
차이점
- 반환 값 유무: Action은 반환 값이 없는 메서드를 참조하며, Func는 값을 반환하는 메서드를 참조합니다.
- 타입 서명: Action의 타입 서명에는 반환 타입이 없지만, Func의 타입 서명에는 반환 타입이 포함됩니다.
- 사용 목적: Action은 작업을 수행하고 끝나는 경우에, Func는 결과를 반환해야 하는 작업에 사용됩니다.
'공부 > C#' 카테고리의 다른 글
EFCore란? (0) | 2024.07.15 |
---|---|
람다 표현식 이란? (0) | 2024.07.14 |
protobuf(Protocol Buffers)에 대해 (0) | 2024.07.08 |
EF Core 데이터 모델링 (0) | 2024.07.02 |
Blazor 기본 구성 (0) | 2024.06.28 |