-
C# 프로그래밍의 기초 : Lambda (람다식)2024년 03월 03일
- 유니얼
-
작성자
-
2024.03.03.:34
728x90람다식은 C#에서 강력하고 유연한 프로그래밍을 가능하게 하는 중요한 기능 중 하나입니다. 이는 익명 함수를 간결하게 표현할 수 있는 방법을 제공하며, 매개변수 목록, => 연산자, 그리고 식 또는 문의 본문으로 구성됩니다. 람다식의 핵심적인 특징은 익명성, 간결성, 그리고 유연성에 있습니다. 이름이 없는 함수를 정의하여 사용할 수 있으며, 복잡한 로직을 몇 줄의 코드로 간결하게 표현할 수 있습니다. 또한, 람다식은 변수에 할당되거나, 메서드의 인자로 전달되는 등 다양한 방식으로 사용될 수 있어 프로그래밍의 유연성을 크게 향상시킵니다.
람다식의 사용 예
람다식은 다음과 같은 형태를 가질 수 있습니다:
- (매개변수 목록) => 식
- (매개변수 목록) => { 문장들; }
예를 들어, 두 수를 더하는 간단한 람다식은 다음과 같이 작성할 수 있습니다:
Func<int, int, int> add = (a, b) => a + b;
여기서 Func<int, int, int>는 두 개의 int 매개변수를 받고 int를 반환하는 대리자(delegate) 타입입니다. 이러한 형태는 람다식을 이용하여 함수를 변수에 할당하고, 이 변수를 통해 함수를 호출하는 방식을 보여줍니다.
람다식의 활용
람다식은 다양한 프로그래밍 상황에서 유용하게 사용됩니다. 특히 다음과 같은 경우에 람다식이 자주 활용됩니다:
- LINQ 쿼리: 람다식은 LINQ 쿼리를 작성할 때 필터링, 정렬, 변환 등의 작업을 간결하고 읽기 쉬운 코드로 표현할 수 있게 해줍니다.
- 이벤트 핸들러 등록: 이벤트에 대한 핸들러를 람다식으로 직접 정의하고 등록함으로써 코드의 가독성을 높일 수 있습니다.
- 타이머의 콜백 함수: 타이머의 콜백 함수를 람다식으로 정의하여 간결한 타이머 처리 로직을 구현할 수 있습니다.
예제 코드
using System; class Program { static void Main(string[] args) { // 1. 두 숫자를 더하는 간단한 람다식 Func<int, int, int> add = (a, b) => a + b; Console.WriteLine($"5 + 3 = {add(5, 3)}"); // 출력: 5 + 3 = 8 // 2. 문자열 리스트에서 특정 조건에 맞는 문자열 필터링 List<string> fruits = new List<string> { "Apple", "Banana", "Cherry", "Date" }; List<string> longFruits = fruits.Where(f => f.Length > 5).ToList(); Console.WriteLine("Fruits with more than 5 characters:"); longFruits.ForEach(f => Console.WriteLine(f)); // 출력: Banana, Cherry // 3. 리스트 정렬을 위한 람다식 List<int> numbers = new List<int> { 5, 3, 8, 1, 2 }; numbers.Sort((x, y) => x.CompareTo(y)); // 오름차순 정렬 Console.WriteLine("Sorted numbers:"); numbers.ForEach(n => Console.WriteLine(n)); // 출력: 1, 2, 3, 5, 8 // 4. 람다식을 사용한 간단한 조건문 Func<int, bool> isEven = num => num % 2 == 0; Console.WriteLine($"4 is even: {isEven(4)}"); // 출력: 4 is even: True Console.WriteLine($"7 is even: {isEven(7)}"); // 출력: 7 is even: False // 5. 이벤트 핸들러에 람다식 사용 Action onButtonClick = () => Console.WriteLine("Button clicked!"); onButtonClick(); // 이벤트가 발생했을 때 호출되는 코드, 출력: Button clicked! // 6. 컬렉션의 모든 요소에 대해 작업 수행 List<int> values = new List<int> { 1, 2, 3, 4, 5 }; values.ForEach(value => Console.WriteLine($"Value: {value}")); // 각 요소 출력 // 7. 문자열 조작 예제 Func<string, string> toUpperCase = s => s.ToUpper(); Console.WriteLine(toUpperCase("hello")); // 출력: HELLO // 8. 두 문자열을 결합하는 람다식 Func<string, string, string> combine = (s1, s2) => s1 + " " + s2; Console.WriteLine(combine("Hello", "World")); // 출력: Hello World // 9. 리스트에서 특정 숫자보다 큰 값 찾기 List<int> numbersList = new List<int> { 10, 20, 30, 40, 50 }; List<int> greaterThan25 = numbersList.Where(n => n > 25).ToList(); Console.WriteLine("Numbers greater than 25:"); greaterThan25.ForEach(n => Console.WriteLine(n)); // 출력: 30, 40, 50 // 10. 컬렉션의 합계 구하기 Func<List<int>, int> sumNumbers = nums => nums.Sum(); Console.WriteLine($"Sum of numbers: {sumNumbers(numbersList)}"); // 출력: Sum of numbers: 150 } }
결론
람다식은 C# 프로그래밍에서 코드의 가독성과 유연성을 대폭 향상시키는 강력한 도구입니다. 익명 함수의 간결한 표현을 통해 프로그래밍의 다양한 상황에서 유용하게 사용될 수 있으며, 특히 LINQ 쿼리 작성이나 이벤트 처리 로직 구현에 있어서 그 진가를 발휘합니다. 프로그래머로서 람다식을 효과적으로 활용한다면, 보다 깔끔하고 유지보수가 용이한 코드를 작성할 수 있을 것입니다.
반응형다음글이전글이전 글이 없습니다.댓글