다음을 통해 공유


Expression<TDelegate> 클래스

정의

강력한 형식의 람다 식을 식 트리 형식의 데이터 구조로 나타냅니다. 이 클래스는 상속할 수 없습니다.

generic <typename TDelegate>
public ref class Expression sealed : System::Linq::Expressions::LambdaExpression
public sealed class Expression<TDelegate> : System.Linq.Expressions.LambdaExpression
type Expression<'Delegate> = class
    inherit LambdaExpression
Public NotInheritable Class Expression(Of TDelegate)
Inherits LambdaExpression

형식 매개 변수

TDelegate

나타내는 대리 Expression<TDelegate> 자의 형식입니다.

상속
Expression<TDelegate>

예제

다음 코드 예제에서는 대리자 형식의 실행 코드와 식 트리 형식의 데이터로 람다 식을 나타내는 방법을 보여 줍니다. 또한 메서드를 사용하여 Compile 식 트리를 실행 코드로 다시 설정하는 방법을 보여 줍니다.


// Lambda expression as executable code.
Func<int, bool> deleg = i => i < 5;
// Invoke the delegate and display the output.
Console.WriteLine("deleg(4) = {0}", deleg(4));

// Lambda expression as data in the form of an expression tree.
System.Linq.Expressions.Expression<Func<int, bool>> expr = i => i < 5;
// Compile the expression tree into executable code.
Func<int, bool> deleg2 = expr.Compile();
// Invoke the method and print the output.
Console.WriteLine("deleg2(4) = {0}", deleg2(4));

/*  This code produces the following output:

    deleg(4) = True
    deleg2(4) = True
*/

' Lambda expression as executable code.
Dim deleg As Func(Of Integer, Boolean) = Function(ByVal i) i < 5
' Invoke the delegate and display the output.
MsgBox(String.Format("deleg(4) = {0}", deleg(4)))

' Lambda expression as data in the form of an expression tree.
Dim expr As System.Linq.Expressions.Expression(Of Func(Of Integer, Boolean)) = Function(ByVal i) i < 5
' Compile the expression tree into executable code.
Dim deleg2 As Func(Of Integer, Boolean) = expr.Compile()
' Invoke the method and print the output.
MsgBox(String.Format("deleg2(4) = {0}", deleg2(4)))

' This code produces the following output:
'
' deleg(4) = True
' deleg2(4) = True

설명

형식이 있는 변수, 필드 또는 매개 변수에 람다 식이 할당되면 Expression<TDelegate>컴파일러는 식 트리를 작성하는 지침을 내보낸다.

메모

람다 식에서 형식 대리자로 변환하는 경우 람다 식에서 형식 Expression<D>D(Expression(Of D)Visual Basic)으로의 변환이 존재합니다. 그러나 예를 들어 람다 식의 본문이 블록인 경우 변환이 실패할 수 있습니다. 즉, 대리자와 식 트리는 오버로드 확인과 관련하여 유사하게 동작합니다.

식 트리는 람다 식의 메모리 내 데이터 표현입니다. 식 트리는 람다 식의 구조를 투명하고 명시적으로 만듭니다. 다른 데이터 구조와 마찬가지로 식 트리의 데이터와 상호 작용할 수 있습니다.

식을 데이터 구조로 처리하는 기능을 통해 API는 사용자 지정 방식으로 검사, 변환 및 처리할 수 있는 형식으로 사용자 코드를 받을 수 있습니다. 예를 들어 LINQ to SQL 데이터 액세스 구현에서는 이 기능을 사용하여 식 트리를 데이터베이스에서 평가할 수 있는 Transact-SQL 문으로 변환합니다.

클래스에 정의된 많은 표준 쿼리 연산자는 Queryable 하나 이상의 형식 Expression<TDelegate>매개 변수를 갖습니다.

NodeType 의 값 Expression<TDelegate> 입니다Lambda.

Lambda<TDelegate>(Expression, IEnumerable<ParameterExpression>) 또는 Lambda<TDelegate>(Expression, ParameterExpression[]) 메서드를 사용하여 개체를 만듭니다Expression<TDelegate>.

속성

Name Description
Body

람다 식의 본문을 가져옵니다.

(다음에서 상속됨 LambdaExpression)
CanReduce

노드를 더 간단한 노드로 줄일 수 있음을 나타냅니다. true를 반환하면 Reduce()를 호출하여 축소된 폼을 생성할 수 있습니다.

(다음에서 상속됨 Expression)
Name

람다 식의 이름을 가져옵니다.

(다음에서 상속됨 LambdaExpression)
NodeType

Expression노드 형식을 반환합니다.

(다음에서 상속됨 LambdaExpression)
Parameters

람다 식의 매개 변수를 가져옵니다.

(다음에서 상속됨 LambdaExpression)
ReturnType

람다 식의 반환 형식을 가져옵니다.

(다음에서 상속됨 LambdaExpression)
TailCall

람다 식이 비상 호출 최적화를 사용하여 컴파일되는지를 나타내는 값을 가져옵니다.

(다음에서 상속됨 LambdaExpression)
Type

Expression 식이 나타내는 식의 정적 형식을 가져옵니다.

(다음에서 상속됨 LambdaExpression)

메서드

Name Description
Accept(ExpressionVisitor)

이 노드 형식에 대한 특정 방문 메서드로 디스패치합니다. 예를 들어 . MethodCallExpressionVisitMethodCall(MethodCallExpression)

(다음에서 상속됨 Expression)
Compile()

식 트리에서 설명하는 람다 식을 실행 코드로 컴파일하고 람다 식을 나타내는 대리자를 생성합니다.

Compile(Boolean)

식 트리에서 설명하는 람다 식을 해석되거나 컴파일된 코드로 컴파일하고 람다 식을 나타내는 대리자를 생성합니다.

Compile(DebugInfoGenerator)

람다 식을 나타내는 대리자를 생성합니다.

CompileToMethod(MethodBuilder, DebugInfoGenerator)

람다를 메서드 정의 및 사용자 지정 디버그 정보로 컴파일합니다.

(다음에서 상속됨 LambdaExpression)
CompileToMethod(MethodBuilder)

람다를 메서드 정의로 컴파일합니다.

(다음에서 상속됨 LambdaExpression)
Equals(Object)

지정된 개체가 현재 개체와 같은지 여부를 확인합니다.

(다음에서 상속됨 Object)
GetHashCode()

기본 해시 함수로 사용됩니다.

(다음에서 상속됨 Object)
GetType()

현재 인스턴스의 Type 가져옵니다.

(다음에서 상속됨 Object)
MemberwiseClone()

현재 Object단순 복사본을 만듭니다.

(다음에서 상속됨 Object)
Reduce()

이 노드를 더 간단한 식으로 줄입니다. CanReduce가 true를 반환하는 경우 유효한 식을 반환해야 합니다. 이 메서드는 자체 축소해야 하는 다른 노드를 반환할 수 있습니다.

(다음에서 상속됨 Expression)
ReduceAndCheck()

이 노드를 더 간단한 식으로 줄입니다. CanReduce가 true를 반환하는 경우 유효한 식을 반환해야 합니다. 이 메서드는 자체 축소해야 하는 다른 노드를 반환할 수 있습니다.

(다음에서 상속됨 Expression)
ReduceExtensions()

식을 알려진 노드 형식(확장 노드가 아님)으로 줄이거나 이미 알려진 형식인 경우 식을 반환합니다.

(다음에서 상속됨 Expression)
ToString()

의 텍스트 표현을 반환합니다 Expression.

(다음에서 상속됨 Expression)
Update(Expression, IEnumerable<ParameterExpression>)

제공된 자식을 사용하여 이와 같은 새 식을 만듭니다. 모든 자식이 같으면 이 식을 반환합니다.

VisitChildren(ExpressionVisitor)

노드를 줄인 다음 축소된 식에서 방문자 대리자를 호출합니다. 노드를 축소할 수 없는 경우 메서드는 예외를 throw합니다.

(다음에서 상속됨 Expression)

적용 대상

추가 정보