Expression Trees是C#的核心语言特性吗?

时间:2013-04-26 21:09:37

标签: c# expression-trees

Expression Tree是核心语言功能还是BCL对象/库的功能?如果没有C#的核心语言功能,您是否无法构建?

2 个答案:

答案 0 :(得分:3)

不,表达式树不是语言功能。它们可以从任何.NET语言中使用,因此它们不能是C#特定的。它们是在内置程序集中定义的普通CLR类型。

通过lambda表达式(和LINQ)的构造是C#特定的。但您始终可以手动构建等效的Expression。 C#编译器本身只是发出对众所周知的Expression静态构造方法的调用。您可以通过使用配置为旧.NET版本的Reflector反编译二进制文件来检查编译器发出的内容。

表达式树是否使用.NET Framework内部API是一个无关的问题,但我想不出他们需要的任何理由。

答案 1 :(得分:0)

Expression类定义可以看出,它是在System.Linq.Expressions命名空间中定义的。这个,Expression不是C#语言特性 - 它是一个可供所有针对CLR的语言使用的类。

例如,这里有一篇关于MSDN的文章,标题为“Expression Trees (C# and Visual Basic)”,说明了如何使用C#和VB.NET创建和使用表达式树。