... | ... | @@ -213,6 +213,21 @@ class Program |
|
|
Console.WriteLine("10 + 2 == " + myFunc(10, 2));
|
|
|
}
|
|
|
}
|
|
|
```
|
|
|
|
|
|
2. 데이터로서의 람다 식
|
|
|
식을 표현한 데이터로 expression tree라고 한다.
|
|
|
|
|
|
```cs
|
|
|
Expression<Func<int, bool>> exprTree = num => num < 5;
|
|
|
|
|
|
// Decompose the expression tree.
|
|
|
ParameterExpression param = (ParameterExpression)exprTree.Parameters[0];
|
|
|
BinaryExpression operation = (BinaryExpression)exprTree.Body;
|
|
|
ParameterExpression left = (ParameterExpression)operation.Left;
|
|
|
ConstantExpression right = (ConstantExpression)operation.Right;
|
|
|
|
|
|
Console.WriteLine("Decomposed expression: {0} => {1} {2} {3}", param.Name, left.Name, operation.NodeType, right.Value);
|
|
|
```
|
|
|
|
|
|
* **람다 식을 위한 전용 delegate :**람다 식은 기존 method와 달리 일회성으로 사용되는 간단한 코드를 표현할 때 사용되는데, 정작 그러한 목적으로 delegate를 일일이 정의해야한다는 불편함이 발생한다. 마이크로소프트에서는 이러한 불편을 덜기 위해 자주 사용되는 delegate형식을 generic의 도움으로 일반화해서 BCL에 Action, Func로 포함시켰다.
|
... | ... | |