Jas*_*ker 6 .net linq dynamic-language-runtime expression-trees .net-3.5
在DLR的LINQ表达式中,有什么区别:
Expression.Convert(SomeVariableExpression, typeof(T));
Run Code Online (Sandbox Code Playgroud)
还有这个:
Expression.Unbox(SomeVariableExpression, typeof(T));
Run Code Online (Sandbox Code Playgroud)
关于这个的文档似乎有点粗略.
更重要的是,其中一个等同于这个C#代码:
(ClassA)InstanceOfClassB
Run Code Online (Sandbox Code Playgroud)
ClassB有一个隐式或显式运算符强制转换为ClassA?
主要区别在于,Epression.Unbox
仅需要从堆中显式拆箱值类型。 Expression.Convert
是您想要用来挂钩用户定义的转换(无论是隐式还是显式)的方法。
如果 expression.Type 或 type 是定义隐式或显式转换运算符的用户定义类型,则
MethodInfo
表示该运算符的 是实现方法。
并且:
如果 expression.Type 或 type 是引用类型,并且存在从 expression.Type 到 type 的显式装箱、拆箱或引用转换,则实现方法为 null。