Expression.ArrayIndex Method

Definition

Создает Expression,представляющее применение оператора индекса массива.Creates an Expression that represents applying an array index operator.

Overloads

ArrayIndex(Expression, Expression[])

Создает выражение MethodCallExpression, представляющее применение оператора индекса массива к многомерному массиву.Creates a MethodCallExpression that represents applying an array index operator to a multidimensional array.

ArrayIndex(Expression, IEnumerable<Expression>)

Создает MethodCallExpression, представляющее применение оператора индекса массива к массиву с рангом более одного.Creates a MethodCallExpression that represents applying an array index operator to an array of rank more than one.

ArrayIndex(Expression, Expression)

Создает BinaryExpression, представляющее применение оператора индекса массива к массиву ранга один.Creates a BinaryExpression that represents applying an array index operator to an array of rank one.

ArrayIndex(Expression, Expression[])

Создает выражение MethodCallExpression, представляющее применение оператора индекса массива к многомерному массиву.Creates a MethodCallExpression that represents applying an array index operator to a multidimensional array.

public:
 static System::Linq::Expressions::MethodCallExpression ^ ArrayIndex(System::Linq::Expressions::Expression ^ array, ... cli::array <System::Linq::Expressions::Expression ^> ^ indexes);
public static System.Linq.Expressions.MethodCallExpression ArrayIndex (System.Linq.Expressions.Expression array, params System.Linq.Expressions.Expression[] indexes);
static member ArrayIndex : System.Linq.Expressions.Expression * System.Linq.Expressions.Expression[] -> System.Linq.Expressions.MethodCallExpression
Public Shared Function ArrayIndex (array As Expression, ParamArray indexes As Expression()) As MethodCallExpression

Parameters

array
Expression

Массив экземпляров Expression, которые являются индексами для операции индекса массива.An array of Expression instances - indexes for the array index operation.

indexes
Expression[]

Массив объектов Expression для заполнения коллекции Arguments.An array of Expression objects to use to populate the Arguments collection.

Returns

MethodCallExpression

Выражение MethodCallExpression со свойствомNodeType, равным Call, и свойствами Object и Arguments, для которых заданы указанные значения.A MethodCallExpression that has the NodeType property equal to Call and the Object and Arguments properties set to the specified values.

Exceptions

Параметр array или indexes имеет значение null.array or indexes is null.

Тип array.Type не представляет тип массива.array.Type does not represent an array type.

-или--or- Ранг типа array.Type не соответствует количеству элементов в indexes.The rank of array.Type does not match the number of elements in indexes.

-или--or- Свойство Type одного или нескольких элементов indexes не представляет тип Int32.The Type property of one or more elements of indexes does not represent the Int32 type.

Examples

В следующем примере показано, как использовать метод ArrayIndex(Expression, Expression[]) для создания MethodCallExpression, который представляет индексирование в двухмерном массиве.The following example demonstrates how to use the ArrayIndex(Expression, Expression[]) method to create a MethodCallExpression that represents indexing into a two-dimensional array.

string[,] gradeArray =
    { {"chemistry", "history", "mathematics"}, {"78", "61", "82"} };

System.Linq.Expressions.Expression arrayExpression =
    System.Linq.Expressions.Expression.Constant(gradeArray);

// Create a MethodCallExpression that represents indexing
// into the two-dimensional array 'gradeArray' at (0, 2).
// Executing the expression would return "mathematics".
System.Linq.Expressions.MethodCallExpression methodCallExpression =
    System.Linq.Expressions.Expression.ArrayIndex(
        arrayExpression,
        System.Linq.Expressions.Expression.Constant(0),
        System.Linq.Expressions.Expression.Constant(2));

Console.WriteLine(methodCallExpression.ToString());

// This code produces the following output:
//
// value(System.String[,]).Get(0, 2)
Dim gradeArray(,) As String = _
    {{"chemistry", "history", "mathematics"}, {"78", "61", "82"}}

Dim arrayExpression As System.Linq.Expressions.Expression = _
    System.Linq.Expressions.Expression.Constant(gradeArray)

' Create a MethodCallExpression that represents indexing
' into the two-dimensional array 'gradeArray' at (0, 2).
' Executing the expression would return "mathematics".
Dim methodCallExpression As System.Linq.Expressions.MethodCallExpression = _
    System.Linq.Expressions.Expression.ArrayIndex( _
        arrayExpression, _
        System.Linq.Expressions.Expression.Constant(0), _
        System.Linq.Expressions.Expression.Constant(2))

Console.WriteLine(methodCallExpression.ToString())

' This code produces the following output:
'
' value(System.String[,]).Get(0, 2)

Remarks

Каждый элемент indexes должен иметь Type равным Int32.Each element of indexes must have Type equal to Int32. Свойство Type array должно представлять тип массива, ранг которого совпадает с числом элементов в indexes.The Type property of array must represent an array type whose rank matches the number of elements in indexes.

Значение, если ранг array. Тип равен 1, этот метод возвращает BinaryExpression.If the rank of array.Type is 1, this method returns a BinaryExpression. Свойству Left присвоено значение array, а для свойства Right задан единственный элемент indexes.The Left property is set to array and the Right property is set to the single element of indexes. Свойство Type BinaryExpression представляет тип элемента array. Тип.The Type property of the BinaryExpression represents the element type of array.Type.

Значение, если ранг array. Тип больше одного, этот метод возвращает MethodCallExpression.If the rank of array.Type is more than one, this method returns a MethodCallExpression. Свойству Method присвоено значение MethodInfo, описывающее открытый метод экземпляра Get для типа, представленного свойством Type array.The Method property is set to the MethodInfo that describes the public instance method Get on the type represented by the Type property of array.

ArrayIndex(Expression, IEnumerable<Expression>)

Создает MethodCallExpression, представляющее применение оператора индекса массива к массиву с рангом более одного.Creates a MethodCallExpression that represents applying an array index operator to an array of rank more than one.

public:
 static System::Linq::Expressions::MethodCallExpression ^ ArrayIndex(System::Linq::Expressions::Expression ^ array, System::Collections::Generic::IEnumerable<System::Linq::Expressions::Expression ^> ^ indexes);
public static System.Linq.Expressions.MethodCallExpression ArrayIndex (System.Linq.Expressions.Expression array, System.Collections.Generic.IEnumerable<System.Linq.Expressions.Expression> indexes);
static member ArrayIndex : System.Linq.Expressions.Expression * seq<System.Linq.Expressions.Expression> -> System.Linq.Expressions.MethodCallExpression
Public Shared Function ArrayIndex (array As Expression, indexes As IEnumerable(Of Expression)) As MethodCallExpression

Parameters

array
Expression

Объект Expression, который следует задать в качестве значения свойства Object.An Expression to set the Object property equal to.

indexes
IEnumerable<Expression>

IEnumerable<T>, содержащий все объекты Expression, используемые для заполнения коллекции Arguments.An IEnumerable<T> that contains Expression objects to use to populate the Arguments collection.

Returns

MethodCallExpression

Выражение MethodCallExpression со свойствомNodeType, равным Call, и свойствами Object и Arguments, для которых заданы указанные значения.A MethodCallExpression that has the NodeType property equal to Call and the Object and Arguments properties set to the specified values.

Exceptions

Параметр array или indexes имеет значение null.array or indexes is null.

Тип array.Type не представляет тип массива.array.Type does not represent an array type.

-или--or- Ранг типа array.Type не соответствует количеству элементов в indexes.The rank of array.Type does not match the number of elements in indexes.

-или--or- Свойство Type одного или нескольких элементов indexes не представляет тип Int32.The Type property of one or more elements of indexes does not represent the Int32 type.

Examples

В следующем примере показано, как использовать метод ArrayIndex(Expression, Expression[]) для создания MethodCallExpression, который представляет индексирование в двухмерном массиве.The following example demonstrates how to use the ArrayIndex(Expression, Expression[]) method to create a MethodCallExpression that represents indexing into a two-dimensional array.

string[,] gradeArray =
    { {"chemistry", "history", "mathematics"}, {"78", "61", "82"} };

System.Linq.Expressions.Expression arrayExpression =
    System.Linq.Expressions.Expression.Constant(gradeArray);

// Create a MethodCallExpression that represents indexing
// into the two-dimensional array 'gradeArray' at (0, 2).
// Executing the expression would return "mathematics".
System.Linq.Expressions.MethodCallExpression methodCallExpression =
    System.Linq.Expressions.Expression.ArrayIndex(
        arrayExpression,
        System.Linq.Expressions.Expression.Constant(0),
        System.Linq.Expressions.Expression.Constant(2));

Console.WriteLine(methodCallExpression.ToString());

// This code produces the following output:
//
// value(System.String[,]).Get(0, 2)
Dim gradeArray(,) As String = _
    {{"chemistry", "history", "mathematics"}, {"78", "61", "82"}}

Dim arrayExpression As System.Linq.Expressions.Expression = _
    System.Linq.Expressions.Expression.Constant(gradeArray)

' Create a MethodCallExpression that represents indexing
' into the two-dimensional array 'gradeArray' at (0, 2).
' Executing the expression would return "mathematics".
Dim methodCallExpression As System.Linq.Expressions.MethodCallExpression = _
    System.Linq.Expressions.Expression.ArrayIndex( _
        arrayExpression, _
        System.Linq.Expressions.Expression.Constant(0), _
        System.Linq.Expressions.Expression.Constant(2))

Console.WriteLine(methodCallExpression.ToString())

' This code produces the following output:
'
' value(System.String[,]).Get(0, 2)

Remarks

Каждый элемент indexes должен иметь Type равным Int32.Each element of indexes must have Type equal to Int32. Свойство Type array должно представлять тип массива, ранг которого совпадает с числом элементов в indexes.The Type property of array must represent an array type whose rank matches the number of elements in indexes.

Значение, если ранг array. Тип равен 1, этот метод возвращает BinaryExpression.If the rank of array.Type is 1, this method returns a BinaryExpression. Свойству Left присвоено значение array, а для свойства Right задан единственный элемент indexes.The Left property is set to array and the Right property is set to the single element of indexes. Свойство Type BinaryExpression представляет тип элемента array. Тип.The Type property of the BinaryExpression represents the element type of array.Type.

Значение, если ранг array. Тип больше одного, этот метод возвращает MethodCallExpression.If the rank of array.Type is more than one, this method returns a MethodCallExpression. Свойству Method присвоено значение MethodInfo, описывающее открытый метод экземпляра Get для типа, представленного свойством Type array.The Method property is set to the MethodInfo that describes the public instance method Get on the type represented by the Type property of array.

ArrayIndex(Expression, Expression)

Создает BinaryExpression, представляющее применение оператора индекса массива к массиву ранга один.Creates a BinaryExpression that represents applying an array index operator to an array of rank one.

public:
 static System::Linq::Expressions::BinaryExpression ^ ArrayIndex(System::Linq::Expressions::Expression ^ array, System::Linq::Expressions::Expression ^ index);
public static System.Linq.Expressions.BinaryExpression ArrayIndex (System.Linq.Expressions.Expression array, System.Linq.Expressions.Expression index);
static member ArrayIndex : System.Linq.Expressions.Expression * System.Linq.Expressions.Expression -> System.Linq.Expressions.BinaryExpression
Public Shared Function ArrayIndex (array As Expression, index As Expression) As BinaryExpression

Parameters

array
Expression

Объект Expression, который следует задать в качестве значения свойства Left.A Expression to set the Left property equal to.

index
Expression

Объект Expression, который следует задать в качестве значения свойства Right.A Expression to set the Right property equal to.

Returns

BinaryExpression

Выражение BinaryExpression со свойствомNodeType, равным ArrayIndex, и свойствами Left и Right, для которых заданы указанные значения.A BinaryExpression that has the NodeType property equal to ArrayIndex and the Left and Right properties set to the specified values.

Exceptions

Параметр array или index имеет значение null.array or index is null.

Тип array.Type не представляет тип массива.array.Type does not represent an array type.

-или--or- Тип array.Type представляет тип массива, ранг которого не равен 1.array.Type represents an array type whose rank is not 1.

-или--or- Тип index.Type не представляет тип Int32.index.Type does not represent the Int32 type.

Remarks

index должен представлять индекс типа Int32.index must represent an index of type Int32.

Свойство Method результирующей BinaryExpression имеет null, а IsLifted и IsLiftedToNull установлены в false.The Method property of the resulting BinaryExpression is null, and both IsLifted and IsLiftedToNull are set to false. Свойство Type равно типу элемента array. Тип.The Type property is equal to the element type of array.Type. Значение свойства Conversionnull.The Conversion property is null.

Applies to