람다(Lambda)란?
람다는 무명 메서드(annoymous method)와 비슷하게 무명 함수를 정의하기 위해서 사용된다.
람다는 두 가지 형태 중 하나의 형태를 가진다.
람다식 (Lambda Expression)
(parameters) => expression // 람다식으로 작성시 return 문을 생략할 수 있습니다.
람다문 (Lambda Statement)
(parameters) => { statements; } // 람다문으로 작성시에는 return 문을 생략할 수 없습니다.
=> 는 람다 연산자라고 불립니다.
Func<T, TResult> lambda = parameter => expression;
파라미터가 하나라면 () 괄호를 생략할 수 있습니다.
(p1, p2, p3) => expression;
파라미터가 여러개라면 () 괄호로 감싸고 콤마(,)로 구분해줘야 합니다.
클로져(Closure)란?
람다식 외부의 변수를 캡처해서 사용하는 람다를 클로져라고 부릅니다.
int factor = 10;
var multiplier = (int x) => x * factor;
var result = multiplier(10);
Console.WriteLine(result); // 100
정적 람다식 (Static Lambda Expression)
C# 9.0에서 추가된 정적 람다식은 외부 변수를 캡처하지 않는다는 걸 보장합니다.
int factor = 2;
var square = static (int x) => x * factor; // ERROR
var result = square(10);
Console.WriteLine(result); // 100
람다식 외부의 변수를 사용하려고 하면 컴파일러가 에러를 반환합니다.
함께 읽으면 좋은 글
참고 사이트
'프로그래밍 > C#' 카테고리의 다른 글
C# Equals()과 GetHashCode()를 함께 재정의 해야하는 이유 (4) | 2023.03.23 |
---|---|
C# 괄호 알아보기 (19) | 2023.03.20 |
C# 네이밍 규칙에 대해서 (1) | 2023.03.15 |
C# Ceiling(), Floor(), Round(), Truncate() 올림 내림 반올림 버림 (4) | 2023.03.14 |
C# 대리자(Delegate)에 대해서 (0) | 2023.03.13 |
댓글