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 쿼리, 이벤트 핸들러 등 다양한 곳에서 사용됩니다.
'C# > 프로그래밍 고급' 카테고리의 다른 글
C# 프로그래밍 고급 - 09. 델리게이터 응용 (1) | 2024.05.30 |
---|---|
C# 프로그래밍 고급 - 08. 델리게이터 종류 (0) | 2024.05.30 |
C# 프로그래밍 고급 - 06. 델리게이터 (0) | 2024.05.30 |
C# 프로그래밍 고급 - 05. 예외 객체 (0) | 2024.05.30 |
C# 프로그래밍 고급 - 04. 예외처리 (0) | 2024.05.29 |