Language INtegrated Query, 강력합니다!
lambda는 의뢰에 응용할 수 있을 뿐만 아니라 표현식 트리(System.Linq.Expressions 이름 공간 기반 형식)에도 사용할 수 있습니다.
다음 범용 의뢰는 lambda, Func
표현식 트리(expression trees)를 통해 의뢰를 유형으로 사용할 수 있습니다: Expression
이상은 표현식 트리가 동적 의뢰 능력을 갖추고 있음을 의미한다.(그리고 C#는 바로 이런 추상적인 포장을 통해 단계별로 오픈엔드 언어 능력을 점차적으로 실현하고 원래의 각 부위를 더욱 튼튼하게 한다.)그 실현은 다음과 같다.
using System;
using System.Linq;
using System.Linq.Expressions;
public class EntryPoint
{
static void Main() {
Expression<Func<int, int>> expr = n => n+1;
Func<int, int> func = expr.Compile();//
for( int i = 0; i < 10; ++i ) {
Console.WriteLine( func(i) );
}
}
}
lambda 표현식을 Expression
lambda 표현식을 사용하지 않아도 같은 목적을 달성할 수 있다. 예는 다음과 같다.
using System;
using System.Linq;
using System.Linq.Expressions;
public class EntryPoint
{
static void Main() {
var n = Expression.Parameter( typeof(int), "n" );// -- n
var expr = Expression<Func<int,int>>.Lambda<Func<int,int>>(
Expression.Add(n, Expression.Constant(1)),n );// Expression Lambda n
Func<int, int> func = expr.Compile();
for( int i = 0; i < 10; ++i ) {
Console.WriteLine( func(i) );
}
}
}
"lambda 표현식""교체 - 업데이트""의 예를 살펴보겠습니다.
using System;
using System.Linq;
using System.Linq.Expressions;
public class EntryPoint
{
static void Main() {
Expression<Func<int,int>> expr = n => n+1;
// lambda 2 2
expr = Expression<Func<int,int>>.Lambda<Func<int,int>>(
Expression.Multiply( expr.Body,Expression.Constant(2) ),
expr.Parameters );
Func<int, int> func = expr.Compile();
for( int i = 0; i < 10; ++i ) {
Console.WriteLine( func(i) );
}
}
}
소결: 표현식 트리는 XML, 관계 데이터베이스 등 다른 구조의 저장 형식을 포함하여 IENumerable에 부합되는 모든 유형을 설명할 수 있다.이것도 C#가 LINQ-collection(Linq to sql, Linq to dataset, Linq to entities, Linq to xml, Linq to objects)을 실현할 수 있는 근본적인 원인이다.
요약: 표현식 트리는 언어의 원생적인 것으로 데이터 조작을 묘사하는 비OO 메커니즘으로 알고리즘 분리 원형을 제공하고 C#함수 프로그래밍의 기초이다.이것은 OO가 크게 행동하는 상황에서 이런 상대적인 비의존 능력은 매우 독특한 점을 가지고 있다.이런 본질적으로 스크립트와 유사한 움직임은 우리로 하여금 OO 위에서 새로운 사고방식을 개척하게 한다. 이와 비슷한 것은 Lisp언어이다.
달리NET 시스템에서 우리는 linq2sql가 표역(table domain space)에 위치하고 있음을 똑똑히 볼 수 있습니다!실제로 linq는 생각보다 복잡하다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Excel Grep toolExcel Grep tool ■히나가타 ■ 시트 구성 ExcelGrep.cls...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.