當前位置: 首頁>>代碼示例>>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;未經允許,請勿轉載。