我有一个使用lambda表达式进行初始化的Lazy<T>
,在调试时如何查看初始化lambda表达式的内容?我期望能够像Expression
类的DebugView
一样查看,但是我没有找到类似的工具。
我有一个使用lambda表达式进行初始化的Lazy<T>
,在调试时如何查看初始化lambda表达式的内容?我期望能够像Expression
类的DebugView
一样查看,但是我没有找到类似的工具。
Lazy<T>
采用委托,所以没有涉及到Expression
类。您的lambda表达式与项目中的任何其他代码一样进行编译,在调试期间不会预览该代码。Expression<TFunc>
,则会得到可以预览的表达式树。Where
方法,它有两个版本:Enumerable.Where
采用Func<T, bool>
,而Queryable.Where
采用Expression<Func<T, bool>>
。Enumerable
类中的Where方法(如在LINQ to Objects和LINQ to XML中所做的那样)时,参数是委托类型System.Func<T, TResult>
。Lambda表达式是创建该委托最方便的方法。例如,在调用相同的方法时,System.Linq.Queryable
类中的参数类型是System.Linq.Expressions.Expression<Func>
,其中Func
是任何具有多达十六个输入参数的Func
委托之一(如在LINQ to SQL中所做的那样)。同样,Lambda表达式只是构造该表达式树的非常简洁的方法。虽然实际上从Lambda创建的对象类型不同,但Lambda使得Where
调用看起来很相似。