Tôi đang cố gắng hiểu AST trong C#. Tôi tự hỏi, chính xác phương pháp Compile()
từ ví dụ này là gì.Phương thức Lambda Expression Compile() làm gì?
// Some code skipped
Expression<Func<string, int, int, string>> data = Expression.Lambda<Func<string, int, int, string>>(
Expression.Call(s, typeof(string).GetMethod(“Substring”, new Type[] { typeof(int), typeof(int) }), a, b),
s, a, b
);
Func<string, int, int, string> fun = data.Compile();
Để ngăn chặn sự hiểu lầm, tôi hiểu các cấu trúc Expression.Lambda
và Expression.Call
. Điều tôi quan tâm là phương pháp Compile()
. Có phải nó bằng cách nào đó tạo ra MSIL thực? Tôi có thể xem MSIL không?
Để nhận được từ một biểu thức cho một đại biểu bạn có thể gọi bạn cần phải gọi 'Biên dịch()' – BrokenGlass
Ok, và những gì đằng sau đại biểu đó? –
Một phương pháp (MethodInfo) – Jeff