C#.NET 3.5:Expression <>用于什么?

Ale*_*lex 9 c# expression

Expression <>究竟在C#中使用了什么?是否有任何情况下您将Expression <>自己实例化为对象?如果是这样,请举个例子!

谢谢!

Jon*_*eet 8

Expression<T>几乎全部用于LINQ,但它并不具备如此.在LINQ中,它通常用于"捕获"代码中表达的逻辑,但将其保存在数据中.然后,LINQ提供程序可以检查该数据并进行适当处理 - 例如,将其转换为SQL.通常,LINQ中的表达式树是由编译器从lambda表达式或查询表达式创建的 - 但在其他情况下,直接使用API​​本身就很方便.

我用过它的其他地方的一些例子,看到它用过:

  • MiscUtil中,Marc Gravell使用它来实现"泛型算术" - 如果类型具有相关运算符,则可以一般地使用它.
  • UnconstrainedMelody中,我以类似的方式使用它来对标志枚举执行操作,而不管它们的底层类型(由于long并且ulong具有不同的范围,这比你预期的要复杂)
  • Visual LINQ中,我使用查询表达式来"动画化"LINQ,因此您可以看到正在发生的事情.虽然这显然是LINQ用法,但它并不是将逻辑转换为另一种形式的传统形式.