C# Lambda Expressions


람다 표현식 소개 (Introduction to Lambda Expressions)

람다 표현식(Lambda Expressions)은 익명 메서드를 정의하는 간결한 방법을 제공하는 기능입니다. C#에서 람다 표현식은 메서드를 직접 정의하지 않고도 메서드를 생성할 수 있게 해줍니다. 람다 표현식은 특히 컬렉션을 필터링하거나, 정렬할 때 유용하게 사용됩니다. 람다 표현식은 대개 델리게이트나 함수형 프로그래밍에서 활용됩니다.

람다 표현식의 기본 문법 (Basic Syntax of Lambda Expressions)

람다 표현식은 => 연산자를 사용하여 정의합니다. 기본 문법은 다음과 같습니다:

(parameters) => expression_or_statement_block
  • parameters: 메서드에 전달될 매개변수 목록입니다. 하나의 매개변수만 있을 경우 괄호를 생략할 수 있습니다.
  • expression_or_statement_block: 람다 표현식의 본문으로, 하나의 식 또는 여러 문으로 구성될 수 있습니다.

람다 표현식 예제 (Examples of Lambda Expressions)

예제: 간단한 람다 표현식 (Simple Lambda Expression)

Func<int, int> square = x => x * x;
Console.WriteLine(square(5));  // 출력: 25

이 예제는 정수를 입력받아 그 제곱 값을 반환하는 람다 표현식을 Func<int, int> 델리게이트에 할당합니다.

예제: 여러 매개변수를 가진 람다 표현식 (Lambda Expression with Multiple Parameters)

Func<int, int, int> add = (x, y) => x + y;
Console.WriteLine(add(3, 4));  // 출력: 7

이 예제는 두 개의 정수를 입력받아 그 합을 반환하는 람다 표현식을 Func<int, int, int> 델리게이트에 할당합니다.

예제: 문장 블록을 사용하는 람다 표현식 (Lambda Expression with Statement Block)

Action<string> greet = name =>
{
    string message = $"Hello, {name}!";
    Console.WriteLine(message);
};
greet("Alice");  // 출력: Hello, Alice!

이 예제는 문자열을 입력받아 인사 메시지를 출력하는 람다 표현식을 Action<string> 델리게이트에 할당합니다. 여기서 람다 표현식은 문장 블록을 포함하고 있습니다.

람다 표현식과 LINQ (Lambda Expressions and LINQ)

람다 표현식은 LINQ (Language Integrated Query) 쿼리에서 필터링, 정렬, 변환 등의 작업을 수행할 때 매우 유용합니다. LINQ 쿼리 문법과 메서드 구문에서 람다 표현식을 사용하여 데이터 컬렉션을 조작할 수 있습니다.

예제: LINQ에서 람다 표현식 사용 (Using Lambda Expressions in LINQ)

using System;
using System.Collections.Generic;
using System.Linq;

public class Program
{
    public static void Main(string[] args)
    {
        List<int> numbers = new List<int> { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };

        // 짝수만 필터링
        var evenNumbers = numbers.Where(n => n % 2 == 0);

        // 결과 출력
        foreach (var num in evenNumbers)
        {
            Console.WriteLine(num);
        }
    }
}

이 예제에서는 Where 메서드에 람다 표현식을 사용하여 리스트에서 짝수만 필터링합니다.

람다 표현식의 유용성 (Utility of Lambda Expressions)

람다 표현식은 코드의 간결성을 높이고, 일회성 메서드를 정의할 때 매우 유용합니다. 람다 표현식은 익명 메서드를 간결하게 정의할 수 있도록 도와주며, 특히 다음과 같은 경우에 유용합니다:

  • 컬렉션 필터링 및 변환: LINQ 쿼리에서 데이터를 필터링하거나 변환할 때.
  • 이벤트 핸들러: 이벤트를 처리할 때 일회성 핸들러를 정의할 때.
  • 비즈니스 로직: 간단한 비즈니스 로직을 메서드 외부에서 정의할 때.

람다 표현식과 익명 메서드 (Lambda Expressions vs Anonymous Methods)

람다 표현식은 익명 메서드의 간결한 대안입니다. 익명 메서드는 delegate 키워드를 사용하여 메서드를 정의하지만, 람다 표현식은 더 간결하고 읽기 쉬운 문법을 제공합니다.

예제: 익명 메서드와 람다 표현식 비교 (Comparing Anonymous Methods and Lambda Expressions)

// 익명 메서드
Func<int, int> multiplyByTwo = delegate(int x) 
{
    return x * 2;
};

// 람다 표현식
Func<int, int> multiplyByTwoLambda = x => x * 2;

위의 예제에서 두 메서드는 같은 작업을 수행하지만, 람다 표현식이 더 간결하고 읽기 쉽습니다.

결론 (Conclusion)

람다 표현식은 C#에서 메서드를 간결하고 유연하게 정의할 수 있는 강력한 도구입니다. 람다 표현식은 메서드를 직접 정의하지 않고도 일회성 메서드를 생성하고, 특히 LINQ 쿼리와 같은 데이터 조작에서 유용하게 사용됩니다. 람다 표현식의 문법은 익명 메서드보다 간결하고 읽기 쉬우며, 코드의 재사용성을 높이고 유지보수를 용이하게 합니다. 람다 표현식을 통해 더 명확하고 간결한 코드를 작성할 수 있습니다.


Posted in C#

Leave a Reply

Your email address will not be published. Required fields are marked *