我有這樣的表達:編譯的表達式樹木誤解?
Expression<Func<string, bool>> f = s => s.Length < 5;
ParameterExpression p = Expression.Parameter (typeof (string), "s");
MemberExpression stringLength = Expression.Property (p, "Length");
ConstantExpression five = Expression.Constant (5);
BinaryExpression comparison = Expression.LessThan (stringLength, five);
Expression<Func<string, bool>> lambda= Expression.Lambda<Func<string, bool>> (comparison, p);
//讓:測試
Func<string, bool> runnable = lambda.Compile();
Console.WriteLine (runnable ("kangaroo")); // False
Console.WriteLine (runnable ("dog")); //True
我想請教一下.Compile()
是什麼編制?第一次執行與後期執行之間有什麼區別?
編譯應該發生的事情一次,不得再發生....
什麼/它是如何幫助我?
你用什麼工具生成這個表達式樹圖圖片? – Anastasiosyal 2012-02-26 14:12:04
@Anastasiosyal它從一本書http://i.stack.imgur.com/Y5ejU.jpg – 2012-02-26 14:38:42
啊,我明白了,我以爲我失蹤了片刻一些偉大的Visualiser的。我猜,@ gcvcdcamp也有[wpf表達式樹可視化工具](http://www.codeproject.com/Articles/83465/ExpressionTree-Visualizer-in-WPF)。一個有趣的項目可能是使用類似[Graph#](http://graphsharp.codeplex)的方式將表達式樹渲染爲圖形。雖然我可以看到這樣的圖表如何能夠隨着任何不重要的表達式迅速變得非常忙碌。 – Anastasiosyal 2012-02-26 14:49:35