-
C# 프로그래밍의 기초: Action과 Func2024년 08월 10일
- 유니얼
-
작성자
-
2024.08.10.:42
728x90C#의 Action과 Func는 대리자(delegate)를 사용하는 강력하고 유연한 방식을 제공합니다. 이 두 가지는 특히 람다 표현식과 함께 사용할 때 코드를 간결하고 명확하게 만들어 주며, 개발자가 보다 함수적인 접근 방식을 취할 수 있도록 도와줍니다. 이 블로그 글에서는 Action과 Func의 기본적인 개념, 차이점, 그리고 사용 예제를 제공하고자 합니다.
Action
Action 대리자는 반환 값이 없는 메서드를 캡슐화합니다. 다시 말해, Action은 void를 반환하는 메서드에 사용됩니다. Action은 최대 16개의 매개변수를 받을 수 있습니다. 매개변수가 없는 경우부터 시작하여, Action<T1, T2, ..., T16>까지 다양한 형태를 지원합니다.
기본 사용 예:
Action greet = () => Console.WriteLine("Hello, World!"); greet();
매개변수가 있는 사용 예:
Action<string, string> printNames = (firstName, lastName) => Console.WriteLine($"First name: {firstName}, Last name: {lastName}");
Func
반면, Func 대리자는 반환 값이 있는 메서드를 캡슐화합니다. Func의 마지막 제네릭 타입은 항상 메서드의 반환 타입을 나타냅니다. Func 역시 최대 16개의 매개변수까지 지원하고, Func<TResult>부터 Func<T1, T2, ..., T16, TResult>까지 다양한 조합을 가질 수 있습니다.
기본 사용 예:
Func<int, int, int> add = (x, y) => x + y; int result = add(5, 3); Console.WriteLine(result); // 출력: 8
매개변수가 여러 개인 사용 예:
Func<double, double, double, double> volume = (x, y, z) => x * y * z; double boxVolume = volume(3.0, 4.5, 5.0); Console.WriteLine(boxVolume); // 출력: 67.5
차이점
주된 차이점은 Action이 반환 값을 갖지 않는다는 것이고, Func는 반드시 반환 값을 요구한다는 점입니다. 이는 두 대리자를 사용하는 상황에 영향을 미칩니다. 예를 들어, 어떤 작업을 수행만 하고 결과를 반환할 필요가 없는 경우 Action을 사용하며, 계산이 필요하고 그 결과를 반환해야 할 때는 Func을 사용합니다.
전체코드
using System; namespace DelegatesExample { class Program { static void Main(string[] args) { // Action 예제 Action greet = () => Console.WriteLine("Hello, World!"); greet(); Action<string, string> printNames = (firstName, lastName) => Console.WriteLine($"First name: {firstName}, Last name: {lastName}"); printNames("Jane", "Doe"); // Func 예제 Func<int, int, int> add = (x, y) => x + y; int result = add(5, 3); Console.WriteLine("Addition Result: " + result); Func<double, double, double, double> volume = (x, y, z) => x * y * z; double boxVolume = volume(3.0, 4.5, 5.0); Console.WriteLine("Volume of the box: " + boxVolume); // 조건을 처리하는 Func 예제 Func<int, string> checkNumber = number => { if (number % 2 == 0) return "Even"; else return "Odd"; }; string numberType = checkNumber(7); Console.WriteLine("Number 7 is: " + numberType); // 결과를 반환하지 않는 복잡한 Action 예제 Action<int, int> printSum = (a, b) => { int sum = a + b; Console.WriteLine($"Sum of {a} and {b} is {sum}"); }; printSum(10, 15); } } }
결론
Action과 Func은 C#에서 함수적 프로그래밍 요소를 간편하게 사용할 수 있게 해주며, 코드의 가독성과 유지 관리를 크게 향상시킵니다. 이들 대리자의 적절한 사용은 프로그램의 유연성을 높이고, 다양한 프로그래밍 상황에 맞춰 코드를 더 간결하고 효과적으로 작성할 수 있도록 도와줍니다.
반응형다음글이전글이전 글이 없습니다.댓글