C#/프로그래밍 고급

C# 프로그래밍 고급 - 07. 람다식

tita 2024. 5. 30. 16:35

C#에서 람다식(Lambda Expression)은 익명 메서드를 간결하게 표현하는 구문입니다. 람다식은 코드의 가독성을 높이고, 특히 델리게이터나 LINQ 쿼리와 함께 사용할 때 매우 유용합니다.

 

람다식의 기본 형태는 다음과 같습니다:

(parameters) => expression

 

또는

(parameters) => { statements }

 

여기서 parameters는 입력 매개변수이고, =>는 "goes to"를 의미하며, expression 또는 { statements }는 람다식의 본문입니다.

 

 

<기본적인 람다식>

다음은 두 개의 숫자를 더하는 람다식을 사용하는 예제입니다.

using System;

class Program
{
    static void Main(string[] args)
    {
        // Func 델리게이터를 사용하여 두 개의 int를 받아 int를 반환하는 람다식 정의
        // 마지막 int는 반환 타입을 의미
        // 여기서 람다식은 (a, b) => a + b;
        Func<int, int, int> add = (a, b) => a + b;

        // 람다식을 호출하여 결과 출력
        int result = add(3, 4);
        Console.WriteLine(result);  
    }
}

/*
[실행 결과]
7
*/

 

 

<매개변수가 하나인 람다식>

람다식을 사용하여 문자열을 대문자로 변환하는 예제입니다.

using System;

class Program
{
    static void Main(string[] args)
    {
        // Func 델리게이터를 사용하여 string을 받아 string을 반환하는 람다식 정의
        Func<string, string> toUpper = s => s.ToUpper();

        // 람다식을 호출하여 결과 출력
        string result = toUpper("hello");
        Console.WriteLine(result); 
    }
}

/*
[실행 결과]
HELLO
*/

 

 

 

<매개변수가 없는 람다식>

매개변수가 없는 람다식도 정의할 수 있습니다. 예를 들어, 현재 시간을 출력하는 람다식입니다.

using System;

class Program
{
    static void Main(string[] args)
    {
        // Action 델리게이터를 사용하여 매개변수가 없는 람다식 정의
        Action printCurrentTime = () => Console.WriteLine(DateTime.Now);

        // 람다식을 호출
        printCurrentTime();
    }
}

 

 

<복잡한 본문을 가진 람다식>

람다식의 본문이 여러 줄인 경우, 중괄호 {}를 사용하여 본문을 정의할 수 있습니다.

using System;

class Program
{
    static void Main(string[] args)
    {
        // Func 델리게이터를 사용하여 두 개의 int를 받아 int를 반환하는 람다식 정의
        Func<int, int, int> multiply = (a, b) =>
        {
            int result = a * b;
            Console.WriteLine("Multiplying " + a + " and " + b);
            return result;
        };

        // 람다식을 호출하여 결과 출력
        int result = multiply(3, 4);
        Console.WriteLine("Result: " + result); 
    }
}

/*
[실행 결과]
Multiplying 3 and 4
Result: 12
*/

 

 

<리스트와 LINQ를 사용한 람다식>

람다식은 LINQ(언어 통합 쿼리)와 함께 사용할 때 특히 유용합니다. 다음은 리스트에서 짝수만 선택하여 출력하는 예제입니다.

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

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

        // LINQ와 람다식을 사용하여 짝수만 선택
        var evenNumbers = numbers.Where(n => n % 2 == 0);

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

 

 

람다식에 대해 정리해보면

 

  • 기본 형태: (parameters) => expression 또는 (parameters) => { statements }.
  • 매개변수: 람다식은 매개변수를 가질 수 있으며, 매개변수가 하나인 경우 괄호를 생략할 수 있습니다.
  • 본문: 본문이 하나의 식일 경우 중괄호를 생략할 수 있으며, 여러 줄일 경우 중괄호를 사용합니다.
  • 용도: 델리게이터 초기화, LINQ 쿼리, 이벤트 핸들러 등 다양한 곳에서 사용됩니다.