Expression.ArrayIndex メソッド

定義

配列の添字演算子の適用を表す Expression を作成します。

オーバーロード

ArrayIndex(Expression, Expression[])

多次元配列への配列の添字演算子の適用を表す MethodCallExpression を作成します。

ArrayIndex(Expression, IEnumerable<Expression>)

ランクが 1 より大きい配列への配列の添字演算子の適用を表す MethodCallExpression を作成します。

ArrayIndex(Expression, Expression)

ランク 1 の配列への配列の添字演算子の適用を表す BinaryExpression を作成します。

ArrayIndex(Expression, Expression[])

多次元配列への配列の添字演算子の適用を表す 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

MethodCallExpression と等しい NodeType プロパティと、指定した値に設定された Call プロパティおよび Object プロパティを含む Arguments

例外

array または indexesnull です。

array.Type は配列型を表しません。

  • または - array.Type のランクは、indexes の要素の数と一致しません。

  • または - indexes の 1 つ以上の要素の Type プロパティは、Int32 型を表しません。

次の例では、このメソッドを ArrayIndex(Expression, Expression[]) 使用して、 MethodCallExpression 2 次元配列へのインデックス作成を表すメソッドを作成する方法を示します。

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)

注釈

の各要素はindexesType等しいInt32必要があります。 のarrayプロパティはType、ランクが 内の要素indexes数と一致する配列型を表す必要があります。

のランクの array場合。型が 1 の場合、このメソッドは BinaryExpression. プロパティが Leftarray 設定され、プロパティが Right 1 つの要素 indexesに設定されます。 のTypeBinaryExpression要素型arrayを表すプロパティです。型。

のランクの array場合。型が複数の場合、このメソッド MethodCallExpressionは . プロパティはMethod、プロパティで表される型のパブリック インスタンス メソッドGetを記述するプロパティにTypearray設定MethodInfoされます。

適用対象

ArrayIndex(Expression, IEnumerable<Expression>)

ランクが 1 より大きい配列への配列の添字演算子の適用を表す 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

MethodCallExpression と等しい NodeType プロパティと、指定した値に設定された Call プロパティおよび Object プロパティを含む Arguments

例外

array または indexesnull です。

array.Type は配列型を表しません。

  • または - array.Type のランクは、indexes の要素の数と一致しません。

  • または - indexes の 1 つ以上の要素の Type プロパティは、Int32 型を表しません。

次の例では、このメソッドを ArrayIndex(Expression, Expression[]) 使用して、 MethodCallExpression 2 次元配列へのインデックス作成を表すメソッドを作成する方法を示します。

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)

注釈

の各要素はindexesType等しいInt32必要があります。 のarrayプロパティはType、ランクが 内の要素indexes数と一致する配列型を表す必要があります。

のランクの array場合。型が 1 の場合、このメソッドは BinaryExpression. プロパティが Leftarray 設定され、プロパティが Right 1 つの要素 indexesに設定されます。 のTypeBinaryExpression要素型arrayを表すプロパティです。型。

のランクの array場合。型が複数の場合、このメソッド MethodCallExpressionは . プロパティはMethod、プロパティで表される型のパブリック インスタンス メソッドGetを記述するプロパティにTypearray設定MethodInfoされます。

適用対象

ArrayIndex(Expression, Expression)

ランク 1 の配列への配列の添字演算子の適用を表す 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

BinaryExpression と等しい NodeType プロパティと、指定した値に設定された ArrayIndex プロパティおよび Left プロパティを含む Right

例外

array または indexnull です。

array.Type は配列型を表しません。

  • または - array.Type は、ランクが 1 ではない配列型を表します。

  • または - index.Type は、Int32 型を表しません。

注釈

index は型 Int32のインデックスを表す必要があります。

結果BinaryExpressionのプロパティは Method null、と両方IsLiftedIsLiftedToNull、に設定falseされます。 このプロパティは Type 、次の要素型 arrayと等しくなります。型。 Conversion プロパティが null です。

適用対象