다음을 통해 공유


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>의 매개 변수가 하나 이상 있습니다.

의 는 NodeTypeExpression<TDelegate> 입니다 Lambda.

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

속성

Body

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

(다음에서 상속됨 LambdaExpression)
CanReduce

노드를 더 단순한 노드로 줄일 수 있는지 나타냅니다. true를 반환하면 Reduce()를 호출하여 축소된 형식을 만들 수 있습니다.

(다음에서 상속됨 Expression)
Name

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

(다음에서 상속됨 LambdaExpression)
NodeType

Expression의 노드 유형을 반환합니다.

(다음에서 상속됨 LambdaExpression)
Parameters

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

(다음에서 상속됨 LambdaExpression)
ReturnType

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

(다음에서 상속됨 LambdaExpression)
TailCall

마무리 호출 최적화를 사용하여 람다 식을 컴파일할지 여부를 나타내는 값을 가져옵니다.

(다음에서 상속됨 LambdaExpression)
Type

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

(다음에서 상속됨 LambdaExpression)

메서드

Accept(ExpressionVisitor)

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

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

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

Compile(Boolean)

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

Compile(Boolean)

람다 식을 나타내는 해석되거나 컴파일된 대리자를 생성합니다.

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

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

Compile(DebugInfoGenerator)

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

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

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

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

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

(다음에서 상속됨 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)

적용 대상

추가 정보