C#에서 Lambda 표현식은 어떻게 사용하나요?
_____A1: Lambda 표현식은 익명 함수(anonymous function)를 간결하게 작성할 수 있는 문법입니다. 주로 델리게이트(delegate)나 LINQ에서 간편하게 함수를 표현할 때 사용됩니다.
---
Q2: Lambda 표현식의 기본 문법은 어떻게 되나요?
A2: 기본 문법은 `(매개변수들) => 표현식` 또는 `(매개변수들) => { 문장들 }` 입니다. 예를 들어, `x => x * x`는 입력값 x의 제곱을 반환하는 함수입니다.
---
Q3: Lambda 표현식을 변수에 할당할 수 있나요?
A3: 네, 변수에 델리게이트 타입 또는 Func, Action 같은 대리자형 타입을 사용해 할당 가능합니다.
예:
```csharp
Func
int result = square(5); // 결과: 25
```
---
Q4: 매개변수가 여러 개인 경우 어떻게 작성하나요?
A4: 매개변수가 여러 개인 경우 괄호로 묶습니다.
예:
```csharp
Func
int sum = add(3, 4); // 결과: 7
```
---
Q5: Lambda 표현식에서 여러 줄 문장은 어떻게 작성하나요?
A5: 블록 형태로 중괄호 `{}`를 사용하며, 명시적으로 return 문이 필요합니다.
예:
```csharp
Func
if (x > y)
return x;
else
return y;
};
---
Q6: Lambda 표현식을 LINQ에서 어떻게 사용하나요?
A6: LINQ 메서드(Where, Select 등)에 조건이나 변환 함수로 전달됩니다.
예:
```csharp
var numbers = new List
var evens = numbers.Where(n => n % 2 == 0).ToList(); // 짝수 필터링
```
---
Q7: Lambda 표현식과 익명 메서드의 차이는 무엇인가요?
A7: 익명 메서드는 `delegate` 키워드를 사용한 익명 함수이며, Lambda는 더 간결한 문법입니다. Lambda가 익명 메서드보다 최신이며 가독성이 좋습니다.
---
Q8: Lambda 표현식 내에서 변수 캡처(클로저)가 가능한가요?
A8: 네, Lambda는 선언된 메서드의 외부 지역 변수를 참조할 수 있으며 해당 변수를 캡처(클로저)합니다.
예:
```csharp
int factor = 2;
Func
int result = multiplier(5); // 결과: 10
```
---
Q9: Lambda 표현식은 속성이나 이벤트에 어떻게 사용하나요?
A9: 이벤트 핸들러 등록 시 Lambda 표현식을 쓸 수 있습니다.
예:
```csharp
button.Click += (sender, e) => { Console.WriteLine("버튼 클릭됨"); };
```
---
Q10: Lambda 표현식을 디버깅할 때 주의할 점은 무엇인가요?
A10: Lambda는 익명 함수이므로 스택 트레이스에서 함수명이 나오지 않을 수 있습니다. 복잡한 로직은 명시적 함수로 분리하거나 중괄호를 포함한 블록 Lambda를 사용해 디버깅을 용이하게 할 수 있습니다.
Lambda 표현식은 `=>` 연산자를 사용하여 정의되며, 주로 LINQ(언어 통합 쿼리)와 함께 사용되어 데이터 쿼리 및 변환 작업을 간편하게 수행할 수 있게 해줍니다.
Lambda 표현식은 메서드, 델리게이트, 이벤트 핸들러 등 다양한 상황에서 활용될 수 있습니다.
Lambda 표현식의 기본 구조 Lambda 표현식의 기본 구문은 다음과 같습니다: ```csharp (parameters) => expression ``` 또는 여러 문장을 포함하는 경우: ```csharp (parameters) => { statements } ``` 여기서 `parameters`는 입력 매개변수를 나타내며, `expression` 또는 `statements`는 실행할 코드 블록을 나타냅니다.
예제 1: 기본적인 Lambda 표현식 아래는 두 숫자를 더하는 간단한 Lambda 표현식의 예입니다: ```csharp Func
5); // result는 8이 됩니다.
``` 위의 코드에서 `Func
Lambda 표현식 `(x, y) => x + y`는 두 숫자를 더하는 기능을 정의합니다.
예제 2: LINQ와 함께 사용하기 Lambda 표현식은 LINQ 쿼리에서 매우 유용하게 사용됩니다.
다음은 리스트에서 짝수만 필터링하는 예제입니다: ```csharp using System; using System.Collections.Generic; using System.Linq; class Program { static void Main() { List
예제 3: 여러 문장을 포함하는 Lambda 표현식 Lambda 표현식은 여러 문장을 포함할 수도 있습니다.
다음은 리스트의 각 요소에 대해 제곱을 계산하는 예제입니다: ```csharp List
예제 4: 매개변수 생략 Lambda 표현식에서 매개변수가 하나일 경우, 괄호를 생략할 수 있습니다.
다음은 그 예입니다: ```csharp Func
4); // result는 16이 됩니다.
``` 예제 5: 클로저(Closure) Lambda 표현식은 클로저를 지원합니다.
이는 Lambda 표현식이 정의된 스코프의 변수를 캡처하여 사용할 수 있다는 의미입니다.
다음은 클로저의 예입니다: ```csharp int factor = 2; Func
5)); // 출력: 10 ``` 여기서 `factor`는 Lambda 표현식 내에서 사용되며, Lambda 표현식이 정의된 스코프의 변수를 캡처합니다.
결론 C 에서 Lambda 표현식은 코드의 가독성을 높이고, 간결하게 메서드를 정의할 수 있는 강력한 도구입니다.
LINQ와 함께 사용하면 데이터 처리 작업을 매우 간편하게 수행할 수 있으며, 클로저를 통해 외부 변수를 캡처하는 기능도 제공합니다.
이러한 특성 덕분에 Lambda 표현식은 현대 C 프로그래밍에서 필수적인 요소로 자리잡고 있습니다.
작성자:
김도현 [비회원]
| 작성일자: 1년 전
2024-09-09 08:38:54
조회수: 178 | 댓글: 0 | 좋아요: 0 | 싫어요: 0
조회수: 178 | 댓글: 0 | 좋아요: 0 | 싫어요: 0
내용이 부정확하다면 싫어요를 클릭해주세요.