이번에는 C# 프로그래밍 언어에서 람다 표현식의 개념과 활용법을 이해하고 실무에 적용할 수 있도록 정리하려 합니다. 특히 간결하고 효율적인 코드 작성에 중점을 두며, LINQ와 컬렉션 다루기에서의 활용 사례를 통해 실제 코드 예제를 통해 직접 실습할 수 있도록 구성해 보겠습니다.
C# 프로그래밍 언어의 람다 표현식 이해와 사용법
람다 표현식은 간단하게 말해, "익명 메서드"를 짧게 작성할 수 있는 방식입니다. 메서드는 일반적으로 이름을 가지고 있지만, 람다 표현식은 이름이 없는 메서드를 작성하는 방법입니다. 이 이름 없는 메서드는 코드에서 필요할 때마다 즉석에서 만들어 사용할 수 있기 때문에, 간결하고 유연하게 사용할 수 있습니다.
람다 표현식의 일반적인 형태는 다음과 같습니다.
(parameters) => expression_or_statement_block;
=>
연산자는 "goes to"라고 읽을 수 있으며, 이를 통해 매개변수를 사용하여 메서드를 정의합니다.
우선 간단한 예를 살펴보겠습니다.
Func<int, int> square = x => x * x;
- 여기서
Func<int, int>
는 입력 매개변수와 반환 값을 모두 `int` 타입으로 갖는 함수를 나타냅니다. x => x * x
는 람다 표현식으로,x
라는 매개변수를 받아x
를 제곱한 값을 반환합니다.
즉, 이 표현식은 숫자 하나를 입력받아 그 제곱을 계산하는 간단한 함수입니다. 이를 사용하면 `square(4)`와 같이 호출해서 결과로 `16`을 얻게 됩니다.
람다 표현식의 기본 구성 요소
- 매개변수: 메서드처럼 데이터를 입력받기 위한 요소입니다. `x`처럼 간단한 변수 하나일 수도 있고, `(x, y)`처럼 여러 개의 매개변수일 수도 있습니다.
- 화살표 연산자 (=>): 람다 표현식의 핵심입니다. 이 연산자는 매개변수와 본문을 구분하는 역할을 합니다.
- 본문: 본문은 주로 반환될 식(expression)이나 여러 문(statement block)으로 이루어집니다. 식일 경우 바로 결과를 반환하며, 여러 문으로 이루어진 경우
{}
중괄호로 묶어야 합니다.
다음은 두 숫자의 합을 반환하는 람다 표현식입니다:
Func<int, int, int> add = (a, b) => a + b;
(a, b)
는 두 개의 입력 매개변수입니다.a + b
는 두 숫자를 더한 결과를 반환합니다.
이렇게 정의된 add
함수를 사용하여 add(3, 5)
를 호출하면 결과로 8
을 얻을 수 있습니다.
람다 표현식의 활용
람다 표현식은 주로 LINQ(Language Integrated Query)와 함께 컬렉션(예: 리스트, 배열 등)을 다룰 때 매우 유용합니다. 람다 표현식을 통해 데이터를 필터링하거나 매핑(mapping)할 수 있습니다.
리스트에서 람다 표현식을 사용하기
다음은 숫자 리스트에서 짝수만 필터링하는 간단한 예시입니다.
List<int> numbers = new List<int> { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
List<int> evenNumbers = numbers.Where(x => x % 2 == 0).ToList();
numbers
는 1부터 10까지의 숫자를 포함한 리스트입니다.numbers.Where(x => x % 2 == 0)
는 람다 표현식을 사용해x
가 2로 나누어 떨어지는 값(즉, 짝수)만 필터링합니다.ToList()
메서드를 사용하여 결과를 리스트로 변환합니다.
위의 예시를 실행하면 evenNumbers
리스트에는 [2, 4, 6, 8, 10]
이 저장됩니다.
익명 메서드와의 비교
람다 표현식은 익명 메서드의 발전된 형태라고 할 수 있습니다. 이전 버전의 C#에서는 익명 메서드를 사용하여 메서드 없이 간단하게 코드를 작성했지만, 람다 표현식은 이를 훨씬 간결하고 직관적으로 쓸 수 있게 만들어 줍니다.
다음은 익명 메서드를 사용한 예시입니다.
Func<int, int> square = delegate (int x) { return x * x; };
위 코드와 다음 람다 표현식은 동일한 역할을 합니다.
Func<int, int> square = x => x * x;
람다 표현식이 훨씬 간결하고 읽기 쉽다는 것을 확인할 수 있습니다.
람다 표현식과 이벤트
람다 표현식은 이벤트와 델리게이트를 다룰 때도 유용합니다. 다음은 버튼 클릭 이벤트에 람다 표현식을 사용하는 예시입니다:
button.Click += (sender, e) => MessageBox.Show("버튼이 클릭되었습니다!");
(sender, e)
는 이벤트 핸들러의 매개변수입니다.MessageBox.Show("버튼이 클릭되었습니다!")
는 버튼이 클릭될 때 실행되는 코드입니다.
'프로그래밍 언어 > C#' 카테고리의 다른 글
C# Task와 Task<T>를 활용한 비동기 프로그래밍 - C# 22 (0) | 2024.11.14 |
---|---|
C# 비동기 프로그래밍 async와 await로 네트워크와 파일 작업 처리하기 - C# 21 (0) | 2024.11.13 |
C# LINQ 연산자를 활용한 데이터를 효율적으로 다루는 간결한 쿼리 예제와 활용법 - C# 19 (0) | 2024.11.11 |
C# 파일 입출력 가이드 CSV, XLSX, JSON 파일 처리 방법 - C# 18 (0) | 2024.10.31 |
C# 파일 입출력 가이드 StreamReader, StreamWriter, File 클래스 사용법 - C# 17 (0) | 2024.10.28 |