본문 바로가기
C#

[C#] 람다함수

by balhea 2023. 12. 22.

이번 글에서는 람다함수 또는 람다식에 대해서 알아보겠습니다. 람다 함수 또는 람다식(Lambda Expression)은 익명 함수의 한 형태로, 함수를 간결하고 축약적으로 표현하는 방법 중 하나입니다.

C#을 비롯한 많은 프로그래밍 언어에서 람다식은 함수형 프로그래밍의 핵심적인 개념 중 하나로 채택되어왔습니다. 이것은 코드를 더 읽기 쉽고 이해하기 쉽게 만들어주며, 간단한 작업들을 효율적으로 처리할 수 있게 해줍니다.

 

람다식의 구조

람다식은 보통 다음과 같은 구조를 가지고 있습니다.

(parameter_list) => expression_or_statement_block

 

parameter_list : 함수의 매개변수 목록입니다.

=> : 람다 식 연산자로, 매개변수 목록과 함수 본문을 구분합니다.

expression_or_statement_block : 함수의 실행 내용이나 본문입니다.

 

람다식은 주로 델리게이트(Delegate)나 함수형 인터페이스의 인스턴스를 생성하는데 사용됩니다. 함수의 매개변수로 람다식을 전달하여 간단한 작업을 수행하거나, 이벤트 핸들러, LINQ 쿼리 등에서 콜백 함수로 활용됩니다.

 

람다식의 활용

간결한 코드

람다식은 익명 함수를 간단하게 표현하여 코드를 더 읽기 쉽고 간결하게 만들어 줍니다.

 

콜백 함수(Callback Function)

이벤트 처리나 LINQ 쿼리에서 콜백 함수로 자주 사용됩니다.

 

델리게이트 사용

람다식은 델리게이트를 짧게 구현할 수 있어, 코드를 간소화하고 가독성을 높여줍니다.

 

람다식의 예시

아래는 간단한 예제로 람다식을 사용하여 두 개의 숫자를 더하는 함수를 표현한 것입니다.

Func<int, int, int> add = (a, b) => a + b;

Console.WriteLine(add(3, 4)); // 출력 결과: 7

위 예제에서 add 변수에 두 개의 정수를 더하는 람다식이 할당되었습니다. 이 람다식은 두 개의 정수를 더하여 결과를 반환합니다.

 

람다식의 장점

람다식은 코드를 간소화하고 익명 함수를 간결하게 표현하는 방법으로, 코드의 가독성과 유연성을 높여줍니다. 주로 간단한 로직을 표현하고 콜백 함수 등에 활용됩니다. 또한, 람다식을 이용하면 반복적이고 간단한 작업을 보다 효율적으로 처리할 수 있습니다.

 

람다식과 익명 함수의 차이

람다식과 익명 함수는 비슷한 개념이지만 문법적으로 약간 다릅니다. 람다식은 보통 더 간결한 표현으로, C#과 같은 언어에서 람다식은 많은 경우 유용하게 사용됩니다.

 

람다식의 활용 사례

람다식은 프로그래밍에서 다양한 상황에서 사용될 수 있는 강력한 기능으로, 코드를 간결하게 만들어주고 함수를 익명으로 정의하고 사용하는 데에 매우 유용합니다. 이제 람다식의 활용 사례를 다양한 영역에서 살펴보겠습니다.

 

1. 델리게이트를 통한 람다식의 활용

람다식은 주로 델리게이트를 간결하게 구현하는 데에 사용됩니다. 델리게이트는 메서드의 시그니처를 캡슐화하여 메서드를 참조할 수 있는 형식입니다. 람다식을 이용하면 델리게이트를 간단하게 표현할 수 있습니다.

Func<int, int, int> add = (a, b) => a + b;

위 코드에서 add는 두 개의 정수를 더하는 함수를 나타냅니다. 이는 Func 델리게이트를 사용하여 정의되었고, 람다식을 이용하여 더하기 연산을 수행합니다.

 

2. LINQ (Language Integrated Query)에서의 활용

LINQ는 C#에서 데이터를 쿼리하기 위한 기능을 제공합니다. 람다식은 LINQ에서 조건을 정의하거나 데이터를 필터링하고 변환하는 데에 사용됩니다.

List<int> numbers = new List<int> { 1, 2, 3, 4, 5 };
var evenNumbers = numbers.Where(n => n % 2 == 0);

위 코드에서 Where 메서드에 전달되는 람다식은 리스트에서 짝수를 필터링합니다.

 

3. 이벤트 핸들러 등에서의 활용

GUI 프로그래밍이나 이벤트 기반 프로그램에서는 이벤트 핸들러를 사용합니다. 이때 람다식을 이용하면 간단한 이벤트 핸들러를 정의할 수 있습니다.

button.Click += (sender, e) =>
{
    Console.WriteLine("Button Clicked!");
    // 다른 로직 실행 가능
};

위 코드에서는 버튼 클릭 이벤트가 발생하면 콘솔에 메시지를 출력하는 이벤트 핸들러를 람다식으로 작성하였습니다.

 

4. 병렬 처리 (Parallel Programming)에서의 활용

람다식은 병렬 처리 코드를 더 간단하게 작성하는 데에도 사용됩니다. Parallel.ForEach를 사용할 때 람다식을 활용하여 병렬 처리 로직을 구현할 수 있습니다.

List<int> numbers = Enumerable.Range(1, 1000).ToList();
Parallel.ForEach(numbers, number =>
{
    Console.WriteLine(number * number);
});

위 코드에서는 리스트의 각 요소를 제곱하여 병렬로 출력하는 작업을 수행합니다.

 

5. 딜레이드 실행 및 비동기 작업에서의 활용

람다식은 비동기 작업을 실행하거나 딜레이된 작업을 수행하는데 유용합니다. Task.Delay와 함께 람다식을 사용하여 딜레이된 작업을 정의할 수 있습니다.

await Task.Delay(1000, () =>
{
    Console.WriteLine("1초 후에 실행됩니다.");
});

위 코드에서는 1초 후에 콘솔에 메시지를 출력하는 작업을 수행합니다.

 

람다식은 많은 경우 간결한 코드 작성과 간편한 로직 구현을 위해 활용됩니다. 델리게이트, LINQ, 이벤트 핸들러, 병렬 처리, 비동기 작업 등 다양한 상황에서 사용되며, 함수를 간결하게 표현하여 코드의 가독성과 유지 보수성을 향상시키는 데 큰 도움이 됩니다. 많은 프로그래밍 언어들이 람다식을 지원하고 있으며, 이를 이용하여 코드를 더 간결하고 효율적으로 작성할 수 있습니다. C#에서 람다식은 많은 경우 코드를 간소화하고 가독성을 높여주는 강력한 기능으로 활용됩니다.

'C#' 카테고리의 다른 글

[C#] 캡슐화  (0) 2023.12.23
[C#] 클래스와 객체  (0) 2023.12.22
[C#] 익명함수  (0) 2023.12.22
[C#] 재귀함수  (0) 2023.12.21
[C#] 사용자 정의 함수  (0) 2023.12.21