Expression.ArrayIndex 方法

定义

创建一个表示应用数组索引运算符的 Expression

重载

ArrayIndex(Expression, Expression[])

创建一个 MethodCallExpression,它表示将数组索引运算符应用到多维数组中。

ArrayIndex(Expression, IEnumerable<Expression>)

创建一个 MethodCallExpression,它表示将数组索引运算符应用到多个级别的数组中。

ArrayIndex(Expression, Expression)

创建一个 BinaryExpression,它表示将数组索引运算符应用到级别一的数组中。

ArrayIndex(Expression, Expression[])

Source:
MethodCallExpression.cs
Source:
MethodCallExpression.cs
Source:
MethodCallExpression.cs

创建一个 MethodCallExpression,它表示将数组索引运算符应用到多维数组中。

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

参数

array
Expression

Expression 实例的数组 - 数组索引操作的索引。

indexes
Expression[]

用于填充 Expression 集合的 Arguments 对象的数组。

返回

一个 MethodCallExpression,其 NodeType 属性等于 Call,并且其 ObjectArguments 属性设置为指定值。

例外

arrayindexesnull

array.Type 不表示数组类型。

- 或 -

array.Type 的秩与 indexes 中的元素数量不匹配。

- 或 -

Type 的一个或多个元素的 indexes 属性不表示 Int32 类型。

示例

下面的示例演示如何使用 ArrayIndex(Expression, Expression[]) 方法创建一个 MethodCallExpression 表示二维数组中索引的 。

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)

注解

的每个 indexes 元素必须 Type 等于 Int32Typearray 属性必须表示其秩与 中的indexes元素数匹配的数组类型。

如果 的排名为 array。类型为 1,此方法返回 BinaryExpression。 属性 Left 设置为 arrayRight 属性设置为 的 indexes单个元素。 TypeBinaryExpression 属性表示 的array元素类型。类型。

如果 的排名为 array。类型为多个类型,此方法返回 MethodCallExpression。 属性Method设置为 ,MethodInfo用于描述 由 的 array属性表示Type的类型上的公共实例方法Get

适用于

ArrayIndex(Expression, IEnumerable<Expression>)

Source:
MethodCallExpression.cs
Source:
MethodCallExpression.cs
Source:
MethodCallExpression.cs

创建一个 MethodCallExpression,它表示将数组索引运算符应用到多个级别的数组中。

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

参数

array
Expression

要将 Expression 属性设置为与其相等的 Object

indexes
IEnumerable<Expression>

一个 IEnumerable<T>,包含用来填充 Expression 集合的 Arguments 对象。

返回

一个 MethodCallExpression,其 NodeType 属性等于 Call,并且其 ObjectArguments 属性设置为指定值。

例外

arrayindexesnull

array.Type 不表示数组类型。

- 或 -

array.Type 的秩与 indexes 中的元素数量不匹配。

- 或 -

Type 的一个或多个元素的 indexes 属性不表示 Int32 类型。

示例

下面的示例演示如何使用 ArrayIndex(Expression, Expression[]) 方法创建一个 MethodCallExpression 表示二维数组中索引的 。

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)

注解

的每个 indexes 元素必须 Type 等于 Int32Typearray 属性必须表示其秩与 中的indexes元素数匹配的数组类型。

如果 的排名为 array。类型为 1,此方法返回 BinaryExpression。 属性 Left 设置为 arrayRight 属性设置为 的 indexes单个元素。 TypeBinaryExpression 属性表示 的array元素类型。类型。

如果 的排名为 array。类型为多个类型,此方法返回 MethodCallExpression。 属性Method设置为 ,MethodInfo用于描述 由 的 array属性表示Type的类型上的公共实例方法Get

适用于

ArrayIndex(Expression, Expression)

Source:
BinaryExpression.cs
Source:
BinaryExpression.cs
Source:
BinaryExpression.cs

创建一个 BinaryExpression,它表示将数组索引运算符应用到级别一的数组中。

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

参数

array
Expression

要将 Expression 属性设置为与其相等的 Left

index
Expression

要将 Expression 属性设置为与其相等的 Right

返回

一个 BinaryExpression,其 NodeType 属性等于 ArrayIndex,并且其 LeftRight 属性设置为指定值。

例外

arrayindexnull

array.Type 不表示数组类型。

- 或 -

array.Type 表示秩不为 1 的数组类型。

- 或 -

index.Type 不表示 Int32 类型。

注解

index 必须表示类型的 Int32索引。

Method生成的 BinaryExpression 的 属性为 null,并且 和 IsLiftedToNullIsLifted设置为 false。 属性 Type 等于 的 array元素类型。类型。 Conversion 属性为 null

适用于