Computer >> 컴퓨터 >  >> 프로그램 작성 >> C#

C#에서 람다 표현식이란 무엇입니까?


람다 식은 익명 메서드를 나타내는 더 나은 방법입니다. 익명 메서드와 Lambda 식 모두 메서드 구현을 인라인으로 정의할 수 있지만 익명 메서드를 사용하려면 메서드에 대한 매개변수 유형과 반환 유형을 명시적으로 정의해야 합니다.

표현식을 본문으로 갖는 표현식 람다:(input-parameters) => 표현식

문장 블록을 본문으로 갖는 문장 람다:(input−parameters) => { }

모든 람다 식은 대리자 형식으로 변환할 수 있습니다. 람다 식이 변환될 수 있는 대리자 형식은 해당 매개 변수 및 반환 값 형식으로 정의됩니다. 람다 식이 값을 반환하지 않으면 Action 대리자 형식 중 하나로 변환할 수 있습니다. 그렇지 않으면 Func 대리자 유형 중 하나로 변환될 수 있습니다.

static void Main(string[] args){
   Func<int, int> square = x => x * x;
   Console.WriteLine(square(5));
   Console.ReadLine();
}

=> 연산자의 오른쪽에 표현식이 있는 람다 표현식을 표현식 람다라고 합니다. 식 람다는 식의 결과를 반환하고 다음과 같은 기본 형식을 취합니다.

액션 라인 =() => Console.WriteLine();

Func<더블, 더블> 큐브 =x => x * x * x;

Func testForEquality =(x, y) => x ==y;

Func isTooLong =(int x, string s) => s.Length> x;

C# 7.0, C# 언어는 튜플에 대한 기본 제공 지원을 제공합니다. 튜플을 람다 식에 대한 인수로 제공할 수 있으며 람다 식이 튜플을 반환할 수도 있습니다.

람다 식 내에서 도입된 변수는 둘러싸는 메서드에서 볼 수 없습니다.

람다 식은 둘러싸는 메서드에서 in, ref 또는 out 매개 변수를 직접 캡처할 수 없습니다.

람다 식의 return 문으로 인해 둘러싸는 메서드가 반환되지 않습니다.

점프 문의 대상이 람다 식 블록 외부에 있는 경우 람다 식은 goto, break 또는 continue 문을 포함할 수 없습니다. 대상이 블록 내부에 있는 경우 람다 표현식 블록 외부에 점프 문이 있는 것도 오류입니다.