람다식은 C#에서 델리게이트와 LINQ에서 자주 사용되는 간결한 함수 표현 방식입니다.
익명 함수보다 짧고 직관적인 문법으로 코드의 가독성과 유지보수성을 크게 향상시켜 줍니다.
람다식은 익명 함수를 간결하게 표현할 수 있는 문법입니다.
주로 함수를 값처럼 사용하고자 할 때 활용되며 코드의 간결성과 가독성을 높여주는 녀석입니다.
.NET 에서만 사용하는 개념이 아닌 Java, Python 등 다양한 언어에서 지원하는 개념입니다.
당연히 저는 .NET C# 기반으로 진행 예정입니다. 껄껄

람다를 알아가기전에 알아야하는 개념이 몇가지 있는데요.
델리게이트(Delegate) 와 린큐(LINQ) 입니다.
델리게이트는 함수를 참조할 수 있는 타입으로 함수를 변수처럼 다를 수 있게 해주는 기능 입니다.
함수를 다른 함수에 인자로 전달하고 싶거나 실핼할 함수를 동적으로 변경하고 싶을 때 사용 합니다.
여기서 익명 함수 개념이 등장하는데 익명 함수는 이름이 없는 메서드로 델리게이트에 함수를 직접 전달하기 위한 하나의 문법 입니다.
https://memoryman.tistory.com/29
델리게이트(Delegate)
델리게이트는 메서드에 대한 참조를 캡슐화하는 형식입니다.풀어쓰면 델리게이트는 메서드를 변수처럼 다룰 수 있게 해주는 객체입니다.주로 콜백 함수나 이벤트 처리에 사용 됩니다.델리게이
memoryman.tistory.com
린큐는 .NET 에서 통합된 데이터 쿼리 기능으로 SQL 처럼 컬렉션, 배열, DB, XML 등 다양한 데이터 소스에 쿼리를 작성할 수 있게 도와주는 문법 입니다.
쉽게 정리하자면 린큐는 코드로 쿼리를 작성한다고 생각하면 될 것 같네요.
여기서 람다는 린큐 쿼리의 함수 표현식으로 사용됩니다.
린큐를 좀 더 간결하게 사용하기 위해서 람다가 사용된다고 이해하시면 편할 것 같습니다.
람다식은 코드의 간결성을 향상 시키기 위해서 사용한다고 말씀 드렸는데요.
델리게이트에 익명 함수를 사용했을 경우와 람다를 사용했을 경우를 비교해보면 람다식이 훨씬 간결하다는걸 알 수 있습니다.
public delegate void MM_Delegate(string message);
public class MemoryMan
{
// 익명 함수
public MM_Delegate mmDel = delegate (string message)
{
Console.WriteLine(message);
};
// 람다식
public MM_Delegate mmDel2 = (message) => Console.WriteLine(message);
}
람다를 적용한 코드에 대해서 알아볼게요.
우선 기본 문법 입니다.
() 안에는 파라미터가 들어가게 되는데요.
파라미터가 없으면 생략 가능하며 2개 이상일 경우 콤마로 구분합니다.
=> 기준으로 오른쪽에는 공식이 적용 됩니다.
(x,y) => x + y 일 경우 파라미터 x, y 를 더한값이 공식이 됩니다.
이러한 문법 자체를 람다식이라고 정의 합니다.
(매개변수) => 식 또는 문장
파라미터가 없어도 사용이 가능 합니다.
() 파라미터를 의미하므로 안에 값이 없으면 파라미터가 없는 람다식 입니다.
.NET 에서 람다식 반환형태는 델리게이트로 추론 합니다.
정확하게 말하면 Func 와 Action 클래스 형태인데 이는 델리게이트 포스팅을 보면 이해될거에요.
람다는 정해진 반환형이 없기 때문에 추론이라 표현 합니다.
public class Program
{
static void Main()
{
var test = () => 1 + 1;
var test2 = () => Console.WriteLine("Memory!");
var test3 = () => MM_Method();
Console.WriteLine(test());
test2();
Console.WriteLine(test3());
}
public static string MM_Method()
{
return "Hi";
}
}
람다를 공부하기 전에는 람다라는게 어떤 기능인 줄 알았는데,
람다는 린큐와 델리게이트에서 사용하기 위한 문법이라는걸 알게되었다.
오늘도 메모리!
'.NET' 카테고리의 다른 글
| .NET 타스크(Task)란 무엇인가. (0) | 2025.05.27 |
|---|---|
| .NET 델리게이트(Delegate)란 무엇인가. (0) | 2025.04.15 |
| .NET 데퍼(Dapper)란 무엇인가. (0) | 2025.04.08 |
| .NET 린큐(LINQ) 무엇인가. (0) | 2025.04.07 |
| .NET 의존성 주입(Dependency Injection) 무엇인가. (0) | 2025.03.28 |