Expression<TDelegate> 클래스
정의
중요
일부 정보는 릴리스되기 전에 상당 부분 수정될 수 있는 시험판 제품과 관련이 있습니다. Microsoft는 여기에 제공된 정보에 대해 어떠한 명시적이거나 묵시적인 보증도 하지 않습니다.
강력한 형식의 람다 식을 식 트리 형태의 데이터 구조로 나타냅니다. 이 클래스는 상속될 수 없습니다.
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>에서 나타내는 대리자의 형식입니다.
- 상속
예제
다음 코드 예제에서는 람다 식을 대리자 형식의 실행 코드로, 식 트리 형식의 데이터로 나타내는 방법을 보여 줍니다. 또한 메서드를 사용하여 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 메서드로 디스패치합니다. 예를 들어 MethodCallExpression은 VisitMethodCall(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) |
적용 대상
추가 정보
.NET