Lamba Expressions上的MSDN文档提供了如何创建表达式树类型的示例,但未显示如何使用它:
using System.Linq.Expressions;
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
Expression<del> myET = x => x * x;
}
}
}
你能完成这个控制台应用程序代码,以便它实际演示这个概念吗?
答案 0 :(得分:1)
通常,表达式树包含两部分。一组参数和一个正文。您的示例中只显示了一个参数,即x
,并且正文通过将其与自身相乘来使用该参数。
基本上,行为设置是这样的:
public int myET(int x)
{
return x * x;
}
但是,为了访问该行为,必须访问Expression的值。此值是委托,可通过使用.Compile()
编译表达式来访问。其类型为Func
,其del
代表的类型参数返回int
并接受int
。
delegate int del(int i);
static void Main(string[] args)
{
Expression<del> myET = x => x * x;
del myFunc = myET.Compile();
}
编译完成后,可以像上面显示的方法一样调用该函数,其中发送参数的值,并返回正文中代码的结果。
delegate int del(int i);
static void Main(string[] args)
{
Expression<del> myET = x => x * x;
del myFunc = myET.Compile();
int fiveSquared = myFunc(5);
Console.WriteLine(fiveSquared);//25
}