Questo articolo è stato tradotto automaticamente. Per visualizzare l'articolo in inglese, selezionare la casella di controllo Inglese. È possibile anche visualizzare il testo inglese in una finestra popup posizionando il puntatore del mouse sopra il testo.
Traduzione
Inglese

Metodo Expression.ArrayAccess (Expression, IEnumerable<Expression>)

 

Data di pubblicazione: ottobre 2016

Crea un oggetto IndexExpression per accedere a una matrice multidimensionale.

Spazio dei nomi:   System.Linq.Expressions
Assembly:  System.Core (in System.Core.dll)

public static IndexExpression ArrayAccess(
	Expression array,
	IEnumerable<Expression> indexes
)

Parametri

array
Type: System.Linq.Expressions.Expression

Espressione che rappresenta la matrice multidimensionale.

indexes
Type: System.Collections.Generic.IEnumerable<Expression>

Oggetto IEnumerable<T> contenente le espressioni usate per indicizzare la matrice.

Valore restituito

Type: System.Linq.Expressions.IndexExpression

Oggetto IndexExpression creato.

L'espressione che rappresenta la matrice può essere ottenuto utilizzando il MakeMemberAccess (metodo), o tramite NewArrayBounds o NewArrayInit.

Esempio di codice seguente viene illustrato come modificare il valore di un elemento in una matrice multidimensionale tramite il ArrayAccess metodo.

// 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));

// This code example produces the following output:
//
// 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

Universal Windows Platform
Disponibile da 8
.NET Framework
Disponibile da 4.0
Libreria di classi portabile
Supportato in: piattaforme .NET portabili
Silverlight
Disponibile da 4.0
Windows Phone Silverlight
Disponibile da 8.0
Windows Phone
Disponibile da 8.1
Torna all'inizio
Mostra: