1. 개념 설명
람다 식은 익명 함수를 간결하게 표현하는 문법입니다. 델리게이트와 식 트리로 변환되며 주로 Func/Action과 함께 씁니다. 매개변수 뒤에 =>로 본문을 연결하고, 한 줄은 식 본문, 여러 줄은 문장 본문으로 작성합니다. 외부 변수 캡처(클로저)도 지원합니다.
2. 코드 예제
간단한 예제로 Func/Action, LINQ, 문장 본문, 클로저를 함께 살펴봅니다. 콘솔 출력으로 동작을 확인합니다.
using System;
using System.Collections.Generic;
using System.Linq;
class Program
{
static void Main()
{
Func<int, int> square = x => x * x;
Action<string> greet = name => Console.WriteLine($"Hello, {name}!");
var numbers = new List<int> { 1, 2, 3, 4, 5, 6 };
var evensTimes10 = numbers.Where(n => n % 2 == 0)
.Select(n => n * 10);
greet("Lambda");
Console.WriteLine($"square(7) = {square(7)}");
Console.WriteLine("evens*10: " + string.Join(",", evensTimes10));
Func<int, int, int> add = (a, b) =>
{
var sum = a + b;
Console.WriteLine($"adding {a}+{b}");
return sum;
};
Console.WriteLine($"add(3,4) = {add(3, 4)}");
int factor = 3;
var scaled = numbers.Select(n => n * factor); // capture
factor = 5; // deferred execution affects result
Console.WriteLine("scaled by factor (after change to 5): " + string.Join(",", scaled));
}
}
LINQ로 필터·변환하고, 문장 본문은 중간 계산과 return을, 클로저는 지연 실행의 영향을 보여줍니다.
3. 주의사항/팁
LINQ는 기본적으로 지연 실행이어서 캡처한 변수 값이 나중에 평가될 수 있습니다. 다중 매개변수는 괄호가 필요하며, 문장 본문에서는 return을 잊지 마세요. 루프 변수 캡처는 의도치 않은 버그를 만들 수 있으니 지역 복사로 고정하는 습관이 좋습니다. 성능 민감 구간에서는 ToList()로 즉시 실행하거나 값 복사를 고려하세요.
'C#' 카테고리의 다른 글
| C# Enum 활용법 (0) | 2026.04.10 |
|---|---|
| C# var와 타입 추론 (0) | 2026.04.09 |
| C# using 문과 IDisposable (0) | 2026.04.08 |
| C# 튜플 (Tuple)과 분해 (0) | 2026.04.08 |
| C# IEnumerable vs IQueryable (0) | 2026.04.07 |