Expression<TDelegate> 클래스

정의

강력한 형식의 람다 식을 식 트리 형태의 데이터 구조로 나타냅니다.Represents a strongly typed lambda expression as a data structure in the form of an expression tree. 이 클래스는 상속될 수 없습니다.This class cannot be inherited.

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>에서 나타내는 대리자의 형식입니다.The type of the delegate that the Expression<TDelegate> represents.

상속
Expression<TDelegate>

예제

다음 코드 예제에서는 람다 식을 대리자 형태의 실행 코드와 식 트리 형식의 데이터로 표현 하는 방법을 보여 줍니다.The following code example demonstrates how to represent a lambda expression both as executable code in the form of a delegate and as data in the form of an expression tree. 또한 메서드를 사용 하 여 식 트리를 다시 실행 코드로 변환 하는 방법을 보여 줍니다 Compile .It also demonstrates how to turn the expression tree back into executable code by using the Compile method.


// 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> 컴파일러는 식 트리를 빌드하기 위한 명령을 내보냅니다.When a lambda expression is assigned to a variable, field, or parameter whose type is Expression<TDelegate>, the compiler emits instructions to build an expression tree.

참고

람다 식에서 형식의 대리자로 변환 하는 경우 람다 식에서 형식 Expression<D> (Visual Basic)으로의 변환은 있습니다 Expression(Of D) D .A conversion from a lambda expression to type Expression<D> (Expression(Of D) in Visual Basic) exists if a conversion from the lambda expression to a delegate of type D exists. 그러나 예를 들어 람다 식의 본문이 블록인 경우 변환이 실패할 수 있습니다.However, the conversion may fail, for example, if the body of the lambda expression is a block. 즉, 대리자와 식 트리는 오버 로드 확인과 관련 하 여 비슷하게 동작 합니다.This means that delegates and expression trees behave similarly with regard to overload resolution.

식 트리는 람다 식의 메모리 내 데이터 표현입니다.The expression tree is an in-memory data representation of the lambda expression. 식 트리는 람다 식의 구조를 투명 하 고 명시적으로 만듭니다.The expression tree makes the structure of the lambda expression transparent and explicit. 다른 데이터 구조와 마찬가지로 식 트리의 데이터와 상호 작용할 수 있습니다.You can interact with the data in the expression tree just as you can with any other data structure.

식을 데이터 구조체로 처리 하는 기능을 통해 Api는 사용자 지정 방식으로 검사, 변환 및 처리할 수 있는 형식으로 사용자 코드를 받을 수 있습니다.The ability to treat expressions as data structures enables APIs to receive user code in a format that can be inspected, transformed, and processed in a custom manner. 예를 들어 LINQ to SQLLINQ to SQL 데이터 액세스 구현에서는이 기능을 사용 하 여 식 트리를 데이터베이스에서 평가할 수 있는 transact-sql 문으로 변환 합니다.For example, the LINQ to SQLLINQ to SQL data access implementation uses this facility to translate expression trees to Transact-SQL statements that can be evaluated by the database.

클래스에 정의 된 많은 표준 쿼리 연산자에는 Queryable 형식의 매개 변수를 하나 이상 포함 Expression<TDelegate> 합니다.Many standard query operators defined in the Queryable class have one or more parameters of type Expression<TDelegate>.

NodeType의가 Expression<TDelegate>Lambda 경우The NodeType of an Expression<TDelegate> is Lambda.

Lambda<TDelegate>(Expression, IEnumerable<ParameterExpression>)또는 메서드를 사용 Lambda<TDelegate>(Expression, ParameterExpression[]) 하 여 개체를 만듭니다 Expression<TDelegate> .Use the Lambda<TDelegate>(Expression, IEnumerable<ParameterExpression>) or Lambda<TDelegate>(Expression, ParameterExpression[]) method to create an Expression<TDelegate> object.

속성

Body

람다 식의 본문을 가져옵니다.Gets the body of the lambda expression.

(다음에서 상속됨 LambdaExpression)
CanReduce

노드를 더 단순한 노드로 줄일 수 있는지 나타냅니다.Indicates that the node can be reduced to a simpler node. true를 반환하면 Reduce()를 호출하여 축소된 형식을 만들 수 있습니다.If this returns true, Reduce() can be called to produce the reduced form.

(다음에서 상속됨 Expression)
Name

람다 식의 이름을 가져옵니다.Gets the name of the lambda expression.

(다음에서 상속됨 LambdaExpression)
NodeType

Expression의 노드 유형을 반환합니다.Returns the node type of this Expression.

(다음에서 상속됨 LambdaExpression)
Parameters

람다 식의 매개 변수를 가져옵니다.Gets the parameters of the lambda expression.

(다음에서 상속됨 LambdaExpression)
ReturnType

람다 식의 반환 형식을 가져옵니다.Gets the return type of the lambda expression.

(다음에서 상속됨 LambdaExpression)
TailCall

마무리 호출 최적화를 사용하여 람다 식을 컴파일할지 여부를 나타내는 값을 가져옵니다.Gets the value that indicates if the lambda expression will be compiled with the tail call optimization.

(다음에서 상속됨 LambdaExpression)
Type

Expression이 나타내는 식의 정적 형식을 가져옵니다.Gets the static type of the expression that this Expression represents.

(다음에서 상속됨 LambdaExpression)

메서드

Accept(ExpressionVisitor)

이 노드 형식에 대한 특정 Visit 메서드로 디스패치합니다.Dispatches to the specific visit method for this node type. 예를 들어 MethodCallExpressionVisitMethodCall(MethodCallExpression)을 호출합니다.For example, MethodCallExpression calls the VisitMethodCall(MethodCallExpression).

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

식 트리로 기술된 람다 식을 실행 코드로 컴파일하고 람다 식을 나타내는 대리자를 생성합니다.Compiles the lambda expression described by the expression tree into executable code and produces a delegate that represents the lambda expression.

Compile(Boolean)

식 트리로 설명되는 람다 식을 해석되거나 컴파일된 코드로 컴파일하고 람다 식을 나타내는 대리자를 생성합니다.Compiles the lambda expression described by the expression tree into interpreted or compiled code and produces a delegate that represents the lambda expression.

Compile(Boolean)

람다 식을 나타내는 해석되거나 컴파일된 대리자를 생성합니다.Produces an interpreted or compiled delegate that represents the lambda expression.

(다음에서 상속됨 LambdaExpression)
Compile(DebugInfoGenerator)

람다 식을 나타내는 대리자를 생성합니다.Produces a delegate that represents the lambda expression.

Compile(DebugInfoGenerator)

람다 식을 나타내는 대리자를 생성합니다.Produces a delegate that represents the lambda expression.

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

람다를 메서드 정의로 컴파일합니다.Compiles the lambda into a method definition.

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

람다를 메서드 정의 및 사용자 지정 디버그 정보로 컴파일합니다.Compiles the lambda into a method definition and custom debug information.

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

지정된 개체가 현재 개체와 같은지 확인합니다.Determines whether the specified object is equal to the current object.

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

기본 해시 함수로 작동합니다.Serves as the default hash function.

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

현재 인스턴스의 Type을 가져옵니다.Gets the Type of the current instance.

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

현재 Object의 단순 복사본을 만듭니다.Creates a shallow copy of the current Object.

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

이 노드를 더 단순한 식으로 줄입니다.Reduces this node to a simpler expression. CanReduce가 true를 반환하면 유효한 식을 반환합니다.If CanReduce returns true, this should return a valid expression. 이 메서드는 자체를 줄여야 하는 다른 노드를 반환할 수 있습니다.This method can return another node which itself must be reduced.

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

이 노드를 더 단순한 식으로 줄입니다.Reduces this node to a simpler expression. CanReduce가 true를 반환하면 유효한 식을 반환합니다.If CanReduce returns true, this should return a valid expression. 이 메서드는 자체를 줄여야 하는 다른 노드를 반환할 수 있습니다.This method can return another node which itself must be reduced.

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

알려진 노드 형식(확장 노드가 아님)으로 식을 줄이거나 이미 알려진 형식인 경우 식을 반환합니다.Reduces the expression to a known node type (that is not an Extension node) or just returns the expression if it is already a known type.

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

Expression의 텍스트 표현을 반환합니다.Returns a textual representation of the Expression.

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

제공된 자식을 사용하여 이 식과 같은 새 식을 만듭니다.Creates a new expression that is like this one, but using the supplied children. 모든 자식이 같으면 이 식을 반환합니다.If all of the children are the same, it will return this expression.

VisitChildren(ExpressionVisitor)

노드를 줄인 다음 줄인 식에서 방문자 대리자를 호출합니다.Reduces the node and then calls the visitor delegate on the reduced expression. 이 메서드는 노드를 줄일 수 없으면 예외를 throw합니다.The method throws an exception if the node is not reducible.

(다음에서 상속됨 Expression)

적용 대상

추가 정보