1. 람다식
1.식 람다(Expression Lambda): 람다 연산자(=>)의 오른 쪽에 식이 있는 람다식
2.문 람다(Statement Lambda): 중괄호 안에 문(Statement)을 지정하는 람다식
1. 식 람다(Expression Lambda) 선언
대리자_타입 변수명 = (매개변수_목록) => 식
ex) Calculate cal = (int a, int b) => a+b;
2. 문 람다(Statement Lambda) 선언
대리자_타입 변수명 = (매개변수_목록) => { 내용 };
ex) Calculate cal = (int a, int b) => { int sum = a+b; Console.WriteLine(sum);
2. 람다식을 사용하는 이유
C#에서 람다식을 사용하는 이유는 대체로 간결하고 가독성이 높은 코드 작성을 위해 사용된다.
람다식을 사용하면 코드의 길이를 줄일 수 있으며, 의미 있는 변수명을 사용하여 코드의 가독성을 높일 수 있다. 또한, 람다식은 메모리를 효율적으로 사용할 수 있게하며, 반복적인 작업을 수행할 때 코드의 재사용성을 높일 수 있다. 람다식은 LINQ를 비롯한 다양한 C# 기능에서 널리 사용되며, 이를 통해 복잡한 코드를 더욱 쉽게 작성할 수 있다.
-> 람다식은 개발자의 생산성을 높여주고, 버그를 줄이고 코드의 유지보수성을 높여 줄 수 있다.
3. 람다식의 활용
LINQ(Language Integrated Query)는 C#의 강력한 기능 중 하나로 람다식을 사용하여 쿼리를 작성할 수 있다.
예를 들어, 아래 코드는 LINQ를 사용하여 이름이 "조성훈"인 사람들의 목록을 출력하는 코드입니
다. 이때 Where() 메서드에 람다식을 사용하여 조건을 지정한다
List<Person> people = new List<Person>
{
new Person { Name = "조성훈", Age = 27 },
new Person { Name = "이종학", Age = 28 },
new Person { Name = "이윤건", Age = 26 }
};
// 람다식 사용 부분
var result = people.Where(x => x.Name == "조성훈");
foreach (var person in result)
{
Console.WriteLine($"{person.Name}, ({person.Age})"); // 출력 결과 : 조성훈, 27
}
대리자는 메서드를 변수처럼 다룰 수 있게 해주는 C#의 기능으로 람다식을 사용하여 대리자를 간결하게 작성할 수 있습니다. 아래 코드는 대리자를 사용하여 간단한 계산기 기능을 구현하는 코드이다. 이때 Add() 메서드에 람다식을 사용하여 덧셈 연산을 수행한다.
public delegate int Calculator(int a, int b);
public class MyCalculator
{
public int Add(int a, int b) => a + b;
}
var calc = new MyCalculator();
// 람다식 사용 부분
Calculator add = (a, b) => calc.Add(a, b);
Console.WriteLine(add(1, 2)); // 출력 결과 : 3
4. 람다식의 성능
람다식은 컴파일러가 코드를 생성하는 데 많은 자원을 사용할 수 있으므로, 매우 복잡한 람다식을 사용하면 성능 저하가 발생할 수 있다. 특히, 반복문 내부에서 람다식을 사용하면 반복횟수에 비례해서 성능이 저하될 수 있다. 또한, 람다식을 사용하면 메모리 할당이 더 많아질 수 있다. 람다식은 클래스를 생성하고, 그 클래스의 인스턴스를 생성하므로, 메모리 사용량이 증가할 수 있다. 이는 대규모 데이터 처리나 반복문에서 특히 두드러진다. 따라서, 람다식을 사용할 때는 성능을 고려해서 적절하게 사용하는 것이 좋다.
-> 간단한 작업에는 람다식을 사용해도 문제가 없지만, 복잡한 작업에는 성능 저하를 방지하기 위해 다른 방법을 고려하는 것이 좋다.