프로그래밍 언어/C#

C# 람다 표현식과 LINQ 활용 그리고 컬렉션 필터링과 코드 최적화 이해하기 - C# 20

eco7T 2024. 11. 12. 12:14
반응형

이번에는 C# 프로그래밍 언어에서 람다 표현식의 개념과 활용법을 이해하고 실무에 적용할 수 있도록 정리하려 합니다. 특히 간결하고 효율적인 코드 작성에 중점을 두며, LINQ와 컬렉션 다루기에서의 활용 사례를 통해 실제 코드 예제를 통해 직접 실습할 수 있도록 구성해 보겠습니다.

C# 람다 표현식
C# 람다 표현식

 

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`을 얻게 됩니다.

 

 

  람다 표현식의 기본 구성 요소

  1. 매개변수: 메서드처럼 데이터를 입력받기 위한 요소입니다. `x`처럼 간단한 변수 하나일 수도 있고, `(x, y)`처럼 여러 개의 매개변수일 수도 있습니다.
  2. 화살표 연산자 (=>): 람다 표현식의 핵심입니다. 이 연산자는 매개변수와 본문을 구분하는 역할을 합니다.
  3. 본문: 본문은 주로 반환될 식(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("버튼이 클릭되었습니다!")는 버튼이 클릭될 때 실행되는 코드입니다.
반응형