... | @@ -226,24 +226,25 @@ Array.ForEach(enumList.ToArray(), (elem) => { Console.WriteLine(elem); }); |
... | @@ -226,24 +226,25 @@ Array.ForEach(enumList.ToArray(), (elem) => { Console.WriteLine(elem); }); |
|
|
|
|
|
#### Expression Trees (ETs)
|
|
#### Expression Trees (ETs)
|
|
|
|
|
|
Expression 객체의 인스턴스 데이터의 역할을 하는 람다 식
|
|
Expression 객체의 인스턴스 데이터의 역할을 하는 람다 식.
|
|
|
|
|
|
Expression 객체는 데이터를 트리 자료구조 형태로 담고 있다. (Expression Tree)
|
|
Expression 객체는 데이터를 트리 자료구조 형태로 담고 있다. (Expression Tree)
|
|
|
|
|
|
Expression.Compile : 데이터로 담겨 있는 람다 식은 컴파일이 가능함, 이 함수는 델리게이트를 반환하고 따라서 함수 호출이 가능함.
|
|
Expression.Compile : 데이터로 담겨 있는 람다 식은 컴파일이 가능함, 이 함수는 델리게이트를 반환하고 따라서 함수 호출이 가능함.
|
|
|
|
|
|
람다 식을 직접 구성하여 Expression 트리를 구성할 수 있음.
|
|
람다 식을 직접 구성하여 Expression 트리를 구성할 수 있음.
|
|
|
|
|
|
여러가지 메서드를 제공함 (Expression 타입의 팩터리 메서드, System.Linq.Expressions에 정의)
|
|
여러가지 메서드를 제공함 (Expression 타입의 팩터리 메서드, System.Linq.Expressions에 정의)
|
|
|
|
|
|
궁극적으로 Expression의 여러 팩토리 메서드를 이용해서 C#코드를 프로그램 실행 시점에 만들어 내는것이 가능 함.
|
|
궁극적으로 Expression의 여러 팩토리 메서드를 이용해서 C#코드를 프로그램 실행 시점에 만들어 내는것이 가능 함.
|
|
|
|
|
|
개발 보다는, 지원 툴, 컴파일러 관련 부분 개발시 유용한 기능
|
|
개발 보다는, 지원 툴, 컴파일러 관련 부분 개발시 유용한 기능
|
|
|
|
|
|
참고 : ExpressionTreeVisualizer (http://msdn.microsoft.com/ko-kr/library/bb397975(v=vs.90).aspx)
|
|
참고 : ExpressionTreeVisualizer (http://msdn.microsoft.com/ko-kr/library/bb397975(v=vs.90).aspx)
|
|
1. Body : expression의 몸체를 리턴한다.
|
|
- Body : expression의 몸체를 리턴한다.
|
|
2. Parameters : 람다식의 파라미터를 리턴한다.
|
|
- Parameters : 람다식의 파라미터를 리턴한다.
|
|
3. NodeType : Expression trees의 특정노드의 ExpressionType을 리턴한다. ExpressionType은
|
|
- NodeType : Expression trees의 특정노드의 ExpressionType을 리턴한다. ExpressionType은 45가지의 값을 가진 열거형타입인데, Expression trees에 속할 수 있는 모든 노드의 목록이 포함되어 있다. 예를 들면, 상수를 리턴하거나, 파라미터를 리턴한다거나, 둘 중에 뭐가 더 큰지 결정한다거나 (<,>), 두 값을 더한다거나(+) 하는 것들이 있다.
|
|
45가지의 값을 가진 열거형타입인데, Expression trees에 속할 수 있는 모든 노드의 목록이 포함되어
|
|
- Type : expression의 정적인 타입을 리턴한다. 위의 예제 같은 경우에는 Func<int, int, int>이다.
|
|
있다. 예를 들면, 상수를 리턴하거나, 파라미터를 리턴한다거나, 둘 중에 뭐가 더 큰지 결정한다거나
|
|
|
|
(<,>), 두 값을 더한다거나(+) 하는 것들이 있다.
|
|
|
|
4. Type : expression의 정적인 타입을 리턴한다. 위의 예제 같은 경우에는 Func<int, int, int>이다.
|
|
|
|
|
|
|
|
#### LINQ (Language INtegrated Query)
|
|
#### LINQ (Language INtegrated Query)
|
|
|
|
|
... | | ... | |