본문 바로가기
C#

C# 람다식: 간결하고 강력한 익명 함수 이해하기

by 공부봇 2025. 1. 13.
반응형

람다식(Lambda Expression)은 C#에서 매우 강력하고 유용한 기능으로, 함수 또는 메서드를 간결하게 표현하는 데 사용됩니다. 초보자도 쉽게 이해할 수 있도록 천천히 설명하겠습니다.


람다식이란?

람다식은 간단히 말해 **"익명 함수"**입니다. 이름이 없는 함수로, 코드를 더 짧고 간결하게 작성할 수 있도록 도와줍니다.
람다식은 다음과 같은 구조를 가집니다:

(입력 매개변수) => { 실행 코드 }

람다식이 왜 개발되었나?

  1. 코드 간결성
    불필요한 메서드 정의를 줄이고, 간단한 작업을 효율적으로 표현하기 위해 개발되었습니다.
  2. 표현력
    데이터를 처리하는 함수형 프로그래밍 스타일을 지원하며, LINQ와 같은 고급 기능에서 매우 유용합니다.
  3. 재사용성 및 가독성
    람다식을 사용하면 코드를 간결하고 읽기 쉽게 만들어 복잡한 작업을 쉽게 이해할 수 있습니다.

간단한 예제

기존 방식 (익명 메서드 사용)

using System;

class Program
{
    static void Main()
    {
        Func<int, int> square = delegate (int x) { return x * x; }; // 익명 메서드 사용
        Console.WriteLine(square(5)); // 출력: 25
    }
}

람다식 사용

using System;

class Program
{
    static void Main()
    {
        Func<int, int> square = x => x * x; // 람다식 사용
        Console.WriteLine(square(5)); // 출력: 25
    }
}

차이점
익명 메서드보다 훨씬 간결하며, 코드의 가독성이 높아집니다.


어떤 상황에서 사용되나?

  1. LINQ (Language-Integrated Query)
    데이터 쿼리를 작성할 때 자주 사용됩니다.
using System;
using System.Linq;

class Program
{
    static void Main()
    {
        int[] numbers = { 1, 2, 3, 4, 5 };
        var evenNumbers = numbers.Where(n => n % 2 == 0); // 짝수 필터링

        foreach (var num in evenNumbers)
        {
            Console.WriteLine(num); // 출력: 2, 4
        }
    }
}
  1. 콜백 함수 버튼 클릭 이벤트, 비동기 작업 등에서 간단한 동작을 지정할 때 사용됩니다.
using System;
using System.Threading.Tasks;

class Program
{
    static void Main()
    {
        Task.Run(() => Console.WriteLine("비동기 작업 수행 중..."));
        Console.ReadLine();
    }
}
  1. 컬렉션 처리 데이터를 변환하거나 필터링할 때 사용됩니다.
using System;
using System.Collections.Generic;

class Program
{
    static void Main()
    {
        List<int> numbers = new List<int> { 1, 2, 3, 4, 5 };
        var squaredNumbers = numbers.Select(x => x * x); // 각 숫자를 제곱

        foreach (var num in squaredNumbers)
        {
            Console.WriteLine(num); // 출력: 1, 4, 9, 16, 25
        }
    }
}

고급 문법에서의 활용

중첩 람다식

람다식을 중첩해서 사용할 수 있습니다. 주로 복잡한 데이터 처리를 할 때 유용합니다.

using System;
using System.Linq;

class Program
{
    static void Main()
    {
        int[] numbers = { 1, 2, 3, 4, 5 };
        var result = numbers.Select(x => new { Original = x, Squared = x * x })
                            .Where(x => x.Squared > 10);

        foreach (var item in result)
        {
            Console.WriteLine($"원본: {item.Original}, 제곱: {item.Squared}");
            // 출력: 원본: 4, 제곱: 16
            // 출력: 원본: 5, 제곱: 25
        }
    }
}

람다식과 Action/Func 델리게이트

람다식은 Action과 Func 델리게이트를 사용하여 간단한 메서드 표현으로 사용됩니다.

using System;

class Program
{
    static void Main()
    {
        Action<string> greet = name => Console.WriteLine($"안녕하세요, {name}님!");
        greet("홍길동"); // 출력: 안녕하세요, 홍길동님!

        Func<int, int, int> add = (x, y) => x + y;
        Console.WriteLine(add(5, 10)); // 출력: 15
    }
}

람다식은 처음엔 다소 생소할 수 있지만, 사용해 보면 코드가 얼마나 간결하고 강력해지는지 알 수 있습니다. 작은 부분부터 익혀 나가면 자연스럽게 익숙해질 것입니다!

반응형