2026년 상식닷컴 선정 식당 & 카페 리스트
최근에 오픈한 호텔을 찾는다면 살펴보세요

C#에서 Action과 Func의 차이는 무엇인가요?

_____
Q1: Action과 Func는 무엇인가요?
A1:
- Action 은 반환값이 없는 메서드를 참조하는 델리게이트입니다. 최대 16개의 입력 매개변수를 받을 수 있습니다.
- Func 는 반환값이 있는 메서드를 참조하는 델리게이트입니다. 최대 16개의 입력 매개변수를 받고 마지막 타입 매개변수가 반환 타입입니다.

---

Q2: Action과 Func의 기본 정의는 어떻게 되나요?
A2:
- `Action`은 `void` 반환형을 가진 메서드를 참조합니다. 예: `Action`
- `Func`는 반환형이 있는 메서드를 참조합니다. 예: `Func`는 두 개 인자(`int`, `string`)를 받아 `bool`을 반환합니다.

---

Q3: Action과 Func의 매개변수 제한은 무엇인가요?
A3:
- 둘 다 최대 16개의 매개변수를 지원합니다.
- Action은 매개변수를 포함하여 최대 16개, 반환값이 없기 때문에 타입 매개변수는 입력 매개변수 개수와 동일합니다.
- Func는 입력 매개변수 + 1 (반환값 타입)으로 최대 17개의 타입 매개변수를 가집니다.

---

Q4: 반환값이 꼭 필요한 경우, 어떤 것을 써야 하나요?
A4:
반환값이 필요한 경우 `Func`를 사용해야 합니다. `Action`은 반환값이 없고 `void`를 반환하므로 반환값을 받을 수 없습니다.

---

Q5: 반환값이 필요 없으면 어떤 것을 쓰나요?
A5:
반환값이 필요 없으면 `Action`을 사용하는 것이 적합합니다.

---

Q6: Action과 Func를 사용하는 예시를 보여주세요.
A6:
```csharp
// Action 예시: 반환값 없음, 두 개 매개변수
Action printAction = (x, y) => Console.WriteLine($"{x}: {y}");
printAction(1, "Hello");

// Func 예시: 반환값 bool, 두 개 매개변수
Func compareFunc = (a, b) => a > b;
bool result = compareFunc(5, 3); // true 반환
```

---

Q7: Action과 Func의 정상적인 사용 목적은 무엇인가요?
A7:
- Action : 이벤트 처리기, 특정 작업 수행 등 반환값이 필요 없는 메서드를 간편히 참조할 때 사용합니다.
- Func : 계산, 비교, 변환 등 결과 값을 반환하는 메서드를 델리게이트로 참조할 때 사용합니다.

---

Q8: 람다식이나 익명 메서드에서 Action과 Func를 어떻게 선택하나요?
A8:
- 람다식의 본문에 반환값이 없으면 `Action`.
- 반환값이 있으면 `Func`를 사용합니다.

---

Q9: Action과 Func의 차이를 하나의 문장으로 요약하면?
A9:
`Action`은 반환값 없는 메서드 참조용, `Func`는 반환값 있는 메서드 참조용 델리게이트입니다.

---

Q10: 사용자 정의 델리게이트 대신 Action/Func를 사용하는 이유는?
A10:
표준화된 제네릭 델리게이트로 코드 가독성과 재사용성이 높고, 별도의 델리게이트 선언 없이 간편합니다.

---

이상으로 C 에서 Action과 Func의 차이에 대한 핵심 FAQ입니다.
C 에서 `Action`과 `Func`는 둘 다 델리게이트(delegate) 타입으로, 메서드를 참조하거나 메서드를 인자로 전달할 때 사용됩니다.

그러나 이 두 가지는 몇 가지 중요한 차이점이 있습니다.

1. 반환 값의 유무 - Action : `Action` 델리게이트는 반환 값이 없는 메서드를 참조하는 데 사용됩니다.

즉, `Action`은 `void` 반환 타입을 가진 메서드를 나타냅니다.

`Action`은 매개변수를 가질 수 있으며, 최대 16개의 매개변수를 받을 수 있습니다.

예를 들어, 다음과 같은 코드가 있습니다.

```csharp Action printMessage = message => Console.WriteLine(message); printMessage("Hello, World!"); // 출력: Hello, World! ``` - Func : `Func` 델리게이트는 반환 값이 있는 메서드를 참조하는 데 사용됩니다.

`Func`는 최소 1개의 매개변수를 가질 수 있으며, 마지막 매개변수는 반환 타입을 나타냅니다.

최대 16개의 매개변수를 받을 수 있으며, 반환 타입은 마지막 매개변수로 지정됩니다.

예를 들어: ```csharp Func add = (a, b) => a + b; int result = add(5,

3); // result는 8이 됩니다.

```

2. 사용 용도 - Action : 주로 이벤트 핸들러나 비동기 작업, 또는 특정 작업을 수행하고 결과를 반환할 필요가 없는 경우에 사용됩니다.

예를 들어, UI 이벤트 처리나 로깅, 데이터베이스 작업 후의 후처리 등을 구현할 때 유용합니다.

- Func : 계산이나 변환 작업을 수행할 때 주로 사용됩니다.

예를 들어, 리스트의 요소를 변환하거나 필터링하는 LINQ 쿼리에서 자주 사용됩니다.

`Func`를 사용하면 특정 입력에 대한 결과를 반환받을 수 있습니다.



3. 예제 다음은 `Action`과 `Func`의 사용 예제를 보여줍니다.

```csharp using System; class Program { static void Main() { // Action 예제 Action greet = name => Console.WriteLine($"Hello, {name}!"); greet("Alice"); // 출력: Hello, Alice! // Func 예제 Func multiply = (x, y) => x * y; int product = multiply(4,

5); Console.WriteLine(product); // 출력: 20 } } ```

4. `Action`과 `Func`는 C 에서 메서드를 참조하고 인자로 전달하는 데 유용한 도구입니다.

`Action`은 반환 값이 없는 메서드를, `Func`는 반환 값이 있는 메서드를 나타내며, 각각의 사용 용도에 따라 적절히 선택하여 사용할 수 있습니다.

이 두 가지 델리게이트는 C 의 고급 기능을 활용하여 코드의 가독성과 재사용성을 높이는 데 큰 도움을 줍니다.

작성자: 박예린 [비회원] | 작성일자: 1년 전 2024-09-09 08:39:17
조회수: 274 | 댓글: 0 | 좋아요: 0 | 싫어요: 0
내용이 부정확하다면 싫어요를 클릭해주세요.