Tôi có biểu hiện này:Hiểu nhầm cây biên soạn?
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);
// phép: test
Func<string, bool> runnable = lambda.Compile();
Console.WriteLine (runnable ("kangaroo")); // False
Console.WriteLine (runnable ("dog")); //True
Tôi muốn hỏi về .Compile()
nó biên dịch gì? Và sự khác biệt giữa việc thực hiện đầu tiên và thực thi sau này là gì ...?
Biên dịch phải là điều gì đó xảy ra một lần và không xảy ra lại sau ....
Điều gì sẽ giúp tôi như thế nào?
Bạn đã sử dụng công cụ nào để tạo hình ảnh biểu đồ cây biểu thức này? – Anastasiosyal
@Anastasiosyal của nó từ một cuốn sách http://i.stack.imgur.com/Y5ejU.jpg –
Ah, tôi hiểu rồi, tôi nghĩ rằng tôi đã thiếu một vài người quan sát tuyệt vời trong một khoảnh khắc. Tôi đoán, cũng có [trình bày hình ảnh cây wpf] (http://www.codeproject.com/Articles/83465/ExpressionTree-Visualizer-in-WPF) bởi @gcvcdcamp. Một dự án thú vị có thể là để hỗ trợ hiển thị cây biểu thức dưới dạng đồ thị bằng cách sử dụng một cái gì đó như [Đồ thị #] (http: //graphsharp.codeplex.com /) mặc dù tôi có thể thấy một biểu đồ như vậy có thể trở nên rất bận rộn một cách nhanh chóng với bất kỳ biểu hiện không tầm thường nào. – Anastasiosyal