С помощью дерева выражений вы создаете описание некоторого кода вместо самого кода.
Деревья выражений не должны использоваться в контексте написания обычного кода, который «не должен компилироваться во время компиляции». Их следует использовать в более динамичных сценариях.
Показанное вами дерево выражений будет скомпилировано в: s.Length < 5
, и вы вызовете runnable
с помощью bool isStringSmallerThan5 = runnable("MyString")
.
Вся идея деревьев выражений заключается в том, что они описывают некоторый код и могут быть скомпилированы во время выполнения. Это означает, что вы можете сделать следующее:
BinaryExpression comparison = null;
if (lessThen)
{
comparison = Expression.LessThan(stringLength, five);
}
else
{
comparison = Expression.GreaterThan(stringLength, five);
}
Теперь вы можете изменить поведение вашего кода во время выполнения!
Самое большое использование деревьев выражений состоит в том, что они могут интерпретироваться поставщиком. Например, Linq To Entities использует деревья выражений и компилирует их в код SQL, который можно запустить в базе данных. LinqToXml - еще один пример того, что вы можете делать с деревьями выражений.
Это хорошее сообщение в блоге , чтобы вы начали.