본문 바로가기
반응형

람다3

C# 변수 캡처(Capture)에 대해서 람다 변수 캡처(Capture) 람다를 다루다 보면 변수를 캡처하는 상황을 맞이하게 될 것이다. using System; using System.Collections.Generic; class Program { static void Main(string[] args) { List actions = new List(); for (int i = 0; i Console.WriteLine(i)); } foreach (var a in actions) { a.Invoke(); } // 기대하던 출력: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 // 실제 출력: 10, 10, 10, 10, 10, 10, 10, 10, 10, 10 } } 위의 코드를 작.. 2024. 1. 23.
C# Closure 이해하기 C# Closure Closure는 C# 2.0부터 지원된 기능으로서 C#의 무명메서드(Anonymous Method)와 람다식(Lambda Expression)으로 구현할 수 있다. 먼저 간단히 무명메서드를 이용하여 Closure를 사용한 예를 살펴보자. 다음은 간단한 무명메서드를 정의하여 print라는 델리게이트 객체에 할당한 예이다. 여기서 정의된 delegate 블록은 작은 함수라 볼 수 있는데, 이 함수는 단순히 콘솔 출력 문장 하나로 되어 있다. 이것이 Closure가 아니다. public void Test2() { Action print = delegate (string msg) { Console.WriteLine(msg); }; print("A"); } 이제 한걸음 더 나아가 Test() .. 2023. 8. 2.
C# 람다(Lambda)에 대해서 람다(Lambda)란? 람다는 무명 메서드(annoymous method)와 비슷하게 무명 함수를 정의하기 위해서 사용된다. 람다는 두 가지 형태 중 하나의 형태를 가진다. 람다식 (Lambda Expression) (parameters) => expression // 람다식으로 작성시 return 문을 생략할 수 있습니다. 람다문 (Lambda Statement) (parameters) => { statements; } // 람다문으로 작성시에는 return 문을 생략할 수 없습니다. => 는 람다 연산자라고 불립니다. Func lambda = parameter => expression; 파라미터가 하나라면 () 괄호를 생략할 수 있습니다. (p1, p2, p3) => expression; 파라미터가 .. 2023. 3. 20.