Expression成员用法(二)

Expression成员用法目录

ArrayAccess(Expression, IEnumerable<Expression>)

创建一个用于访问多维数组的 IndexExpression。
var array = Expression.Parameter(typeof (int[,]), "array");//定义一个二维数组类型参数
var indexfirst = Expression.Parameter(typeof (int), "indexfirst");//定义第一个索引
var indexsecond = Expression.Parameter(typeof (int), "indexsecond");//

var arrayaccess = Expression.ArrayAccess(array, new Expression[] {indexfirst, indexsecond});//构造一个多维数组访问的表达式,第二个参数对应数组维度

var lambda = Expression.Lambda<Func<int[,], int, int, int>>(arrayaccess, array, indexfirst, indexsecond);

int[,] dataArray = {{1, 2, 3}, {4, 5, 6}};

Console.WriteLine(lambda.Compile().Invoke(dataArray,1,0));//相当于dataArray[1,0]
Console.Read();

执行结果:4

ArrayAccess(Expression,Expression[])

创建一个用于访问数组的 IndexExpression。 
同ArrayAccess(Expression, IEnumerable<Expression>)

Expression成员用法目录

你可能感兴趣的:(Expression成员用法(二))