当前位置: 首页>>代码示例>>C#>>正文


C# Expression.ArrayAccess方法代码示例

本文整理汇总了C#中System.Linq.Expressions.Expression.ArrayAccess方法的典型用法代码示例。如果您正苦于以下问题:C# Expression.ArrayAccess方法的具体用法?C# Expression.ArrayAccess怎么用?C# Expression.ArrayAccess使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在System.Linq.Expressions.Expression的用法示例。


在下文中一共展示了Expression.ArrayAccess方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。

示例1:

// Add the following directive to your file:
// using System.Linq.Expressions;  

// This parameter expression represents a variable that will hold the two-dimensional array.
ParameterExpression arrayExpr = Expression.Parameter(typeof(int[,]), "Array");

// This parameter expression represents a first array index.            
ParameterExpression firstIndexExpr = Expression.Parameter(typeof(int), "FirstIndex");
// This parameter expression represents a second array index.            
ParameterExpression secondIndexExpr = Expression.Parameter(typeof(int), "SecondIndex");

// The list of indexes.
List<Expression> indexes = new List<Expression> { firstIndexExpr, secondIndexExpr };

// This parameter represents the value that will be added to a corresponding array element.
ParameterExpression valueExpr = Expression.Parameter(typeof(int), "Value");

// This expression represents an access operation to a multidimensional array.
// It can be used for assigning to, or reading from, an array element.
Expression arrayAccessExpr = Expression.ArrayAccess(
    arrayExpr,
    indexes
);

// This lambda expression assigns a value provided to it to a specified array element.
// The array, the index of the array element, and the value to be added to the element
// are parameters of the lambda expression.
Expression<Func<int[,], int, int, int, int>> lambdaExpr =
    Expression.Lambda<Func<int[,], int, int, int, int>>(
        Expression.Assign(arrayAccessExpr, Expression.Add(arrayAccessExpr, valueExpr)),
        arrayExpr,
        firstIndexExpr,
        secondIndexExpr,
        valueExpr
);

// Print out expressions.
Console.WriteLine("Array Access Expression:");
Console.WriteLine(arrayAccessExpr.ToString());

Console.WriteLine("Lambda Expression:");
Console.WriteLine(lambdaExpr.ToString());

Console.WriteLine("The result of executing the lambda expression:");

// The following statement first creates an expression tree,
// then compiles it, and then executes it.
// Parameters passed to the Invoke method are passed to the lambda expression.
int[,] sampleArray = { {10,  20,   30},
                       {100, 200, 300}};
Console.WriteLine(lambdaExpr.Compile().Invoke(sampleArray, 1, 1, 5));
开发者ID:.NET开发者,项目名称:System.Linq.Expressions,代码行数:51,代码来源:Expression.ArrayAccess

输出:

Array Access Expression:
Array[FirstIndex, SecondIndex]

Lambda Expression:
(Array, FirstIndex, SecondIndex Value) => 
(Array[FirstIndex, SecondIndex] = (Array[FirstIndex, SecondIndex] + Value))

The result of executing the lambda expression:
205

示例2:

// Add the following directive to your file:
// using System.Linq.Expressions;  

// This parameter expression represents a variable that will hold the array.
ParameterExpression arrayExpr = Expression.Parameter(typeof(int[]), "Array");

// This parameter expression represents an array index.            
ParameterExpression indexExpr = Expression.Parameter(typeof(int), "Index");

// This parameter represents the value that will be added to a corresponding array element.
ParameterExpression valueExpr = Expression.Parameter(typeof(int), "Value");

// This expression represents an array access operation.
// It can be used for assigning to, or reading from, an array element.
Expression arrayAccessExpr = Expression.ArrayAccess(
    arrayExpr,
    indexExpr
);

// This lambda expression assigns a value provided to it to a specified array element.
// The array, the index of the array element, and the value to be added to the element
// are parameters of the lambda expression.
Expression<Func<int[], int, int, int>> lambdaExpr = Expression.Lambda<Func<int[], int, int, int>>(
    Expression.Assign(arrayAccessExpr, Expression.Add(arrayAccessExpr, valueExpr)),
    arrayExpr,
    indexExpr,
    valueExpr
);

// Print out expressions.
Console.WriteLine("Array Access Expression:");
Console.WriteLine(arrayAccessExpr.ToString());

Console.WriteLine("Lambda Expression:");
Console.WriteLine(lambdaExpr.ToString());

Console.WriteLine("The result of executing the lambda expression:");

// The following statement first creates an expression tree,
// then compiles it, and then executes it.
// Parameters passed to the Invoke method are passed to the lambda expression.
Console.WriteLine(lambdaExpr.Compile().Invoke(new int[] { 10, 20, 30 }, 0, 5));
开发者ID:.NET开发者,项目名称:System.Linq.Expressions,代码行数:42,代码来源:Expression.ArrayAccess

输出:

Array Access Expression:
Array[Index]

Lambda Expression:
(Array, Index, Value) => (Array[Index] = (Array[Index] + Value))

The result of executing the lambda expression:
15


注:本文中的System.Linq.Expressions.Expression.ArrayAccess方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。