次の方法で共有


Expression.ListInit メソッド

定義

ListInitExpression を作成します。

オーバーロード

ListInit(NewExpression, IEnumerable<ElementInit>)

指定した ListInitExpression オブジェクトを使用してコレクションを初期化する ElementInit を作成します。

ListInit(NewExpression, IEnumerable<Expression>)

"Add" という名前のメソッドを使用してコレクションに要素を追加する ListInitExpression を作成します。

ListInit(NewExpression, ElementInit[])

指定した ListInitExpression オブジェクトを使用してコレクションを初期化する ElementInit を作成します。

ListInit(NewExpression, Expression[])

"Add" という名前のメソッドを使用してコレクションに要素を追加する ListInitExpression を作成します。

ListInit(NewExpression, MethodInfo, IEnumerable<Expression>)

指定したメソッドを使用してコレクションに要素を追加する ListInitExpression を作成します。

ListInit(NewExpression, MethodInfo, Expression[])

指定したメソッドを使用してコレクションに要素を追加する ListInitExpression を作成します。

ListInit(NewExpression, IEnumerable<ElementInit>)

ソース:
ListInitExpression.cs
ソース:
ListInitExpression.cs
ソース:
ListInitExpression.cs

指定した ListInitExpression オブジェクトを使用してコレクションを初期化する ElementInit を作成します。

public:
 static System::Linq::Expressions::ListInitExpression ^ ListInit(System::Linq::Expressions::NewExpression ^ newExpression, System::Collections::Generic::IEnumerable<System::Linq::Expressions::ElementInit ^> ^ initializers);
public static System.Linq.Expressions.ListInitExpression ListInit (System.Linq.Expressions.NewExpression newExpression, System.Collections.Generic.IEnumerable<System.Linq.Expressions.ElementInit> initializers);
static member ListInit : System.Linq.Expressions.NewExpression * seq<System.Linq.Expressions.ElementInit> -> System.Linq.Expressions.ListInitExpression
Public Shared Function ListInit (newExpression As NewExpression, initializers As IEnumerable(Of ElementInit)) As ListInitExpression

パラメーター

newExpression
NewExpression

NewExpression プロパティを等しく設定する NewExpression

initializers
IEnumerable<ElementInit>

IEnumerable<T> コレクションへの読み込みに使用する ElementInit オブジェクトを含む Initializers

戻り値

ListInitExpression と等しい NodeType プロパティと、指定した値に設定された ListInit プロパティおよび NewExpression プロパティを含む Initializers

例外

newExpression または initializersnull です。

- または -

initializers の 1 つ以上の要素が null です。

newExpression.Type は IEnumerable を実装していません。

次の例では、 メソッドを ListInit(NewExpression, ElementInit[]) 使用して、2 つのキーと値のペアを持つ新しいディクショナリ インスタンスの初期化を表す を作成 ListInitExpression する方法を示します。

string tree1 = "maple";
string tree2 = "oak";

System.Reflection.MethodInfo addMethod = typeof(Dictionary<int, string>).GetMethod("Add");

// Create two ElementInit objects that represent the
// two key-value pairs to add to the Dictionary.
System.Linq.Expressions.ElementInit elementInit1 =
    System.Linq.Expressions.Expression.ElementInit(
        addMethod,
        System.Linq.Expressions.Expression.Constant(tree1.Length),
        System.Linq.Expressions.Expression.Constant(tree1));
System.Linq.Expressions.ElementInit elementInit2 =
    System.Linq.Expressions.Expression.ElementInit(
        addMethod,
        System.Linq.Expressions.Expression.Constant(tree2.Length),
        System.Linq.Expressions.Expression.Constant(tree2));

// Create a NewExpression that represents constructing
// a new instance of Dictionary<int, string>.
System.Linq.Expressions.NewExpression newDictionaryExpression =
    System.Linq.Expressions.Expression.New(typeof(Dictionary<int, string>));

// Create a ListInitExpression that represents initializing
// a new Dictionary<> instance with two key-value pairs.
System.Linq.Expressions.ListInitExpression listInitExpression =
    System.Linq.Expressions.Expression.ListInit(
        newDictionaryExpression,
        elementInit1,
        elementInit2);

Console.WriteLine(listInitExpression.ToString());

// This code produces the following output:
//
// new Dictionary`2() {Void Add(Int32, System.String)(5,"maple"),
// Void Add(Int32, System.String)(3,"oak")}
Dim tree1 As String = "maple"
Dim tree2 As String = "oak"

Dim addMethod As System.Reflection.MethodInfo = _
    Type.GetType("System.Collections.Generic.Dictionary`2[System.Int32, System.String]").GetMethod("Add")

' Create two ElementInit objects that represent the
' two key-value pairs to add to the Dictionary.
Dim elementInit1 As System.Linq.Expressions.ElementInit = _
    System.Linq.Expressions.Expression.ElementInit( _
        addMethod, _
        System.Linq.Expressions.Expression.Constant(tree1.Length), _
        System.Linq.Expressions.Expression.Constant(tree1))
Dim elementInit2 As System.Linq.Expressions.ElementInit = _
    System.Linq.Expressions.Expression.ElementInit( _
        addMethod, _
        System.Linq.Expressions.Expression.Constant(tree2.Length), _
        System.Linq.Expressions.Expression.Constant(tree2))

' Create a NewExpression that represents constructing
' a new instance of Dictionary(Of Integer, String).
Dim newDictionaryExpression As System.Linq.Expressions.NewExpression = _
    System.Linq.Expressions.Expression.[New](Type.GetType("System.Collections.Generic.Dictionary`2[System.Int32, System.String]"))

' Create a ListInitExpression that represents initializing
' a new Dictionary(Of T) instance with two key-value pairs.
Dim listInitExpression As System.Linq.Expressions.ListInitExpression = _
    System.Linq.Expressions.Expression.ListInit( _
        newDictionaryExpression, _
        elementInit1, _
        elementInit2)

Console.WriteLine(listInitExpression.ToString())

' This code produces the following output:
'
' new Dictionary`2() {Void Add(Int32, System.String)(5,"maple"),
' Void Add(Int32, System.String)(3,"oak")

注釈

newExpression プロパティはType、 を実装する型を表すIEnumerable必要があります。

Type結果ListInitExpressionの の プロパティは とnewExpression等しくなります。型。

適用対象

ListInit(NewExpression, IEnumerable<Expression>)

ソース:
ListInitExpression.cs
ソース:
ListInitExpression.cs
ソース:
ListInitExpression.cs

"Add" という名前のメソッドを使用してコレクションに要素を追加する ListInitExpression を作成します。

public:
 static System::Linq::Expressions::ListInitExpression ^ ListInit(System::Linq::Expressions::NewExpression ^ newExpression, System::Collections::Generic::IEnumerable<System::Linq::Expressions::Expression ^> ^ initializers);
public static System.Linq.Expressions.ListInitExpression ListInit (System.Linq.Expressions.NewExpression newExpression, System.Collections.Generic.IEnumerable<System.Linq.Expressions.Expression> initializers);
static member ListInit : System.Linq.Expressions.NewExpression * seq<System.Linq.Expressions.Expression> -> System.Linq.Expressions.ListInitExpression
Public Shared Function ListInit (newExpression As NewExpression, initializers As IEnumerable(Of Expression)) As ListInitExpression

パラメーター

newExpression
NewExpression

NewExpression プロパティを等しく設定する NewExpression

initializers
IEnumerable<Expression>

IEnumerable<T> コレクションへの読み込みに使用する Expression オブジェクトを含む Initializers

戻り値

ListInitExpression と等しい NodeType プロパティおよび指定した値に設定された ListInit プロパティを含む NewExpression

例外

newExpression または initializersnull です。

- または -

initializers の 1 つ以上の要素が null です。

newExpression.Type は IEnumerable を実装していません。

newExpression.Type またはその基本型で、"Add" (大文字と小文字を区別しない) という名前のインスタンス メソッドは宣言されていません。

- または -

newExpression.Type またはその基本型の Add メソッドは、ちょうど 1 つの引数を受け取りません。

- または -

initializers の最初の要素の Type プロパティが表す型は、newExpression.Type またはその基本型の Add メソッドの引数の型に割り当てることができません。

- または -

"Add" (大文字と小文字を区別しない) という名前の、複数の引数と互換性のあるメソッドが、newExpression.Type および/またはその基本型に存在します。

注釈

newExpression プロパティはType、 を実装する型を表すIEnumerable必要があります。

のこのオーバーロードListInit(NewExpression, IEnumerable<Expression>)newExpressionを使用するには、 です。型またはその基本型では、引数を 1 つだけ受け取る "Add" (大文字と小文字を区別しない) という名前の 1 つのメソッドを宣言する必要があります。 引数の型は、 の最初の要素initializersの プロパティでType表される型から割り当て可能である必要があります。

返される ListInitExpression の プロパティにはInitializers、 の要素ごとに型ElementInitの要素initializersが 1 つ含まれています。 ArgumentsInitializers各要素の プロパティは、 の対応する要素initializersを含むシングルトン コレクションです。 の各要素Initializersの プロパティはAddMethod、 で検出された add メソッドをnewExpression表します。型またはその基本型。

Type結果ListInitExpressionの の プロパティは とnewExpression等しくなります。型。

適用対象

ListInit(NewExpression, ElementInit[])

ソース:
ListInitExpression.cs
ソース:
ListInitExpression.cs
ソース:
ListInitExpression.cs

指定した ListInitExpression オブジェクトを使用してコレクションを初期化する ElementInit を作成します。

public:
 static System::Linq::Expressions::ListInitExpression ^ ListInit(System::Linq::Expressions::NewExpression ^ newExpression, ... cli::array <System::Linq::Expressions::ElementInit ^> ^ initializers);
public static System.Linq.Expressions.ListInitExpression ListInit (System.Linq.Expressions.NewExpression newExpression, params System.Linq.Expressions.ElementInit[] initializers);
static member ListInit : System.Linq.Expressions.NewExpression * System.Linq.Expressions.ElementInit[] -> System.Linq.Expressions.ListInitExpression
Public Shared Function ListInit (newExpression As NewExpression, ParamArray initializers As ElementInit()) As ListInitExpression

パラメーター

newExpression
NewExpression

NewExpression プロパティを等しく設定する NewExpression

initializers
ElementInit[]

ElementInit コレクションへの読み込みに使用する Initializers オブジェクトの配列。

戻り値

ListInitExpression と等しい NodeType プロパティと、指定した値に設定された ListInit プロパティおよび NewExpression プロパティを含む Initializers

例外

newExpression または initializersnull です。

- または -

initializers の 1 つ以上の要素が null です。

newExpression.Type は IEnumerable を実装していません。

次の例では、 メソッドを ListInit(NewExpression, ElementInit[]) 使用して、2 つのキーと値のペアを持つ新しいディクショナリ インスタンスの初期化を表す を作成 ListInitExpression する方法を示します。

string tree1 = "maple";
string tree2 = "oak";

System.Reflection.MethodInfo addMethod = typeof(Dictionary<int, string>).GetMethod("Add");

// Create two ElementInit objects that represent the
// two key-value pairs to add to the Dictionary.
System.Linq.Expressions.ElementInit elementInit1 =
    System.Linq.Expressions.Expression.ElementInit(
        addMethod,
        System.Linq.Expressions.Expression.Constant(tree1.Length),
        System.Linq.Expressions.Expression.Constant(tree1));
System.Linq.Expressions.ElementInit elementInit2 =
    System.Linq.Expressions.Expression.ElementInit(
        addMethod,
        System.Linq.Expressions.Expression.Constant(tree2.Length),
        System.Linq.Expressions.Expression.Constant(tree2));

// Create a NewExpression that represents constructing
// a new instance of Dictionary<int, string>.
System.Linq.Expressions.NewExpression newDictionaryExpression =
    System.Linq.Expressions.Expression.New(typeof(Dictionary<int, string>));

// Create a ListInitExpression that represents initializing
// a new Dictionary<> instance with two key-value pairs.
System.Linq.Expressions.ListInitExpression listInitExpression =
    System.Linq.Expressions.Expression.ListInit(
        newDictionaryExpression,
        elementInit1,
        elementInit2);

Console.WriteLine(listInitExpression.ToString());

// This code produces the following output:
//
// new Dictionary`2() {Void Add(Int32, System.String)(5,"maple"),
// Void Add(Int32, System.String)(3,"oak")}
Dim tree1 As String = "maple"
Dim tree2 As String = "oak"

Dim addMethod As System.Reflection.MethodInfo = _
    Type.GetType("System.Collections.Generic.Dictionary`2[System.Int32, System.String]").GetMethod("Add")

' Create two ElementInit objects that represent the
' two key-value pairs to add to the Dictionary.
Dim elementInit1 As System.Linq.Expressions.ElementInit = _
    System.Linq.Expressions.Expression.ElementInit( _
        addMethod, _
        System.Linq.Expressions.Expression.Constant(tree1.Length), _
        System.Linq.Expressions.Expression.Constant(tree1))
Dim elementInit2 As System.Linq.Expressions.ElementInit = _
    System.Linq.Expressions.Expression.ElementInit( _
        addMethod, _
        System.Linq.Expressions.Expression.Constant(tree2.Length), _
        System.Linq.Expressions.Expression.Constant(tree2))

' Create a NewExpression that represents constructing
' a new instance of Dictionary(Of Integer, String).
Dim newDictionaryExpression As System.Linq.Expressions.NewExpression = _
    System.Linq.Expressions.Expression.[New](Type.GetType("System.Collections.Generic.Dictionary`2[System.Int32, System.String]"))

' Create a ListInitExpression that represents initializing
' a new Dictionary(Of T) instance with two key-value pairs.
Dim listInitExpression As System.Linq.Expressions.ListInitExpression = _
    System.Linq.Expressions.Expression.ListInit( _
        newDictionaryExpression, _
        elementInit1, _
        elementInit2)

Console.WriteLine(listInitExpression.ToString())

' This code produces the following output:
'
' new Dictionary`2() {Void Add(Int32, System.String)(5,"maple"),
' Void Add(Int32, System.String)(3,"oak")

注釈

newExpression プロパティはType、 を実装する型を表すIEnumerable必要があります。

Type結果ListInitExpressionの の プロパティは とnewExpression等しくなります。型。

適用対象

ListInit(NewExpression, Expression[])

ソース:
ListInitExpression.cs
ソース:
ListInitExpression.cs
ソース:
ListInitExpression.cs

"Add" という名前のメソッドを使用してコレクションに要素を追加する ListInitExpression を作成します。

public:
 static System::Linq::Expressions::ListInitExpression ^ ListInit(System::Linq::Expressions::NewExpression ^ newExpression, ... cli::array <System::Linq::Expressions::Expression ^> ^ initializers);
public static System.Linq.Expressions.ListInitExpression ListInit (System.Linq.Expressions.NewExpression newExpression, params System.Linq.Expressions.Expression[] initializers);
static member ListInit : System.Linq.Expressions.NewExpression * System.Linq.Expressions.Expression[] -> System.Linq.Expressions.ListInitExpression
Public Shared Function ListInit (newExpression As NewExpression, ParamArray initializers As Expression()) As ListInitExpression

パラメーター

newExpression
NewExpression

NewExpression プロパティを等しく設定する NewExpression

initializers
Expression[]

Expression コレクションへの読み込みに使用する Initializers オブジェクトの配列。

戻り値

ListInitExpression と等しい NodeType プロパティおよび指定した値に設定された ListInit プロパティを含む NewExpression

例外

newExpression または initializersnull です。

- または -

initializers の 1 つ以上の要素が null です。

newExpression.Type は IEnumerable を実装していません。

newExpression.Type またはその基本型で、"Add" (大文字と小文字を区別しない) という名前のインスタンス メソッドは宣言されていません。

- または -

newExpression.Type またはその基本型の Add メソッドは、ちょうど 1 つの引数を受け取りません。

- または -

initializers の最初の要素の Type プロパティが表す型は、newExpression.Type またはその基本型の Add メソッドの引数の型に割り当てることができません。

- または -

"Add" (大文字と小文字を区別しない) という名前の、複数の引数と互換性のあるメソッドが、newExpression.Type および/またはその基本型に存在します。

注釈

newExpression プロパティはType、 を実装する型を表すIEnumerable必要があります。

のこのオーバーロードListInit(NewExpression, Expression[])newExpressionを使用するには、 です。型またはその基本型では、引数を 1 つだけ受け取る "Add" (大文字と小文字を区別しない) という名前の 1 つのメソッドを宣言する必要があります。 引数の型は、 の最初の要素initializersの プロパティでType表される型から割り当て可能である必要があります。

返される ListInitExpression の プロパティにはInitializers、 の要素ごとに型ElementInitの要素initializersが 1 つ含まれています。 ArgumentsInitializers各要素の プロパティは、 の対応する要素initializersを含むシングルトン コレクションです。 の各要素Initializersの プロパティはAddMethod、 で検出された add メソッドをnewExpression表します。型またはその基本型。

Type結果ListInitExpressionの の プロパティは とnewExpression等しくなります。型。

適用対象

ListInit(NewExpression, MethodInfo, IEnumerable<Expression>)

ソース:
ListInitExpression.cs
ソース:
ListInitExpression.cs
ソース:
ListInitExpression.cs

指定したメソッドを使用してコレクションに要素を追加する ListInitExpression を作成します。

public:
 static System::Linq::Expressions::ListInitExpression ^ ListInit(System::Linq::Expressions::NewExpression ^ newExpression, System::Reflection::MethodInfo ^ addMethod, System::Collections::Generic::IEnumerable<System::Linq::Expressions::Expression ^> ^ initializers);
public static System.Linq.Expressions.ListInitExpression ListInit (System.Linq.Expressions.NewExpression newExpression, System.Reflection.MethodInfo addMethod, System.Collections.Generic.IEnumerable<System.Linq.Expressions.Expression> initializers);
public static System.Linq.Expressions.ListInitExpression ListInit (System.Linq.Expressions.NewExpression newExpression, System.Reflection.MethodInfo? addMethod, System.Collections.Generic.IEnumerable<System.Linq.Expressions.Expression> initializers);
static member ListInit : System.Linq.Expressions.NewExpression * System.Reflection.MethodInfo * seq<System.Linq.Expressions.Expression> -> System.Linq.Expressions.ListInitExpression
Public Shared Function ListInit (newExpression As NewExpression, addMethod As MethodInfo, initializers As IEnumerable(Of Expression)) As ListInitExpression

パラメーター

newExpression
NewExpression

NewExpression プロパティを等しく設定する NewExpression

addMethod
MethodInfo

コレクションに要素を追加する、"Add" (大文字と小文字は区別されません) という名前のインスタンス メソッドを表す MethodInfo

initializers
IEnumerable<Expression>

IEnumerable<T> コレクションへの読み込みに使用する Expression オブジェクトを含む Initializers

戻り値

ListInitExpression と等しい NodeType プロパティおよび指定した値に設定された ListInit プロパティを含む NewExpression

例外

newExpression または initializersnull です。

- または -

initializers の 1 つ以上の要素が null です。

newExpression.Type は IEnumerable を実装していません。

- または -

addMethodnull ではなく、受け取る引数が 1 つだけの "Add" (大文字と小文字は区別されません) という名前のインスタンス メソッドを表しません。

- または -

addMethodnull ではなく、initializers の 1 つ以上の要素の Type プロパティによって表される型を addMethod が表すメソッドの引数型に代入することはできません。

addMethodnull で、1 つの型互換の引数を受け取る "Add" という名前のインスタンス メソッドが newExpression.Type またはその基本データ型に存在しません。

注釈

newExpression プロパティはType、 を実装する型を表すIEnumerable必要があります。

が のnewExpression場合addMethodnull。型またはその基本型では、引数を 1 つだけ受け取る "Add" (大文字と小文字を区別しない) という名前の 1 つのメソッドを宣言する必要があります。 が でないnull場合addMethodは、パラメーターが 1 つだけの "Add" (大文字と小文字を区別しない) という名前のインスタンス メソッドを表す必要があります。 の各要素initializersの プロパティでType表される型は、add メソッドの引数型に割り当て可能である必要があります。

返される ListInitExpression の プロパティにはInitializers、 の要素ごとに型ElementInitの要素initializersが 1 つ含まれています。 ArgumentsInitializers各要素の プロパティは、 の対応する要素initializersを含むシングルトン コレクションです。 の AddMethod 各要素 Initializers の プロパティは と addMethod等しくなります。

結果ListInitExpressionの の プロパティは Type と等しくなりますnewExpression。型。

適用対象

ListInit(NewExpression, MethodInfo, Expression[])

ソース:
ListInitExpression.cs
ソース:
ListInitExpression.cs
ソース:
ListInitExpression.cs

指定したメソッドを使用してコレクションに要素を追加する ListInitExpression を作成します。

public:
 static System::Linq::Expressions::ListInitExpression ^ ListInit(System::Linq::Expressions::NewExpression ^ newExpression, System::Reflection::MethodInfo ^ addMethod, ... cli::array <System::Linq::Expressions::Expression ^> ^ initializers);
public static System.Linq.Expressions.ListInitExpression ListInit (System.Linq.Expressions.NewExpression newExpression, System.Reflection.MethodInfo addMethod, params System.Linq.Expressions.Expression[] initializers);
public static System.Linq.Expressions.ListInitExpression ListInit (System.Linq.Expressions.NewExpression newExpression, System.Reflection.MethodInfo? addMethod, params System.Linq.Expressions.Expression[] initializers);
static member ListInit : System.Linq.Expressions.NewExpression * System.Reflection.MethodInfo * System.Linq.Expressions.Expression[] -> System.Linq.Expressions.ListInitExpression
Public Shared Function ListInit (newExpression As NewExpression, addMethod As MethodInfo, ParamArray initializers As Expression()) As ListInitExpression

パラメーター

newExpression
NewExpression

NewExpression プロパティを等しく設定する NewExpression

addMethod
MethodInfo

1 つの引数を受け取り、コレクションに要素を追加するインスタンス メソッドを表す MethodInfo

initializers
Expression[]

Expression コレクションへの読み込みに使用する Initializers オブジェクトの配列。

戻り値

ListInitExpression と等しい NodeType プロパティおよび指定した値に設定された ListInit プロパティを含む NewExpression

例外

newExpression または initializersnull です。

- または -

initializers の 1 つ以上の要素が null です。

newExpression.Type は IEnumerable を実装していません。

- または -

addMethodnull ではなく、受け取る引数が 1 つだけの "Add" (大文字と小文字は区別されません) という名前のインスタンス メソッドを表しません。

- または -

addMethodnull ではなく、initializers の 1 つ以上の要素の Type プロパティによって表される型を addMethod が表すメソッドの引数型に代入することはできません。

addMethodnull で、1 つの型互換の引数を受け取る "Add" という名前のインスタンス メソッドが newExpression.Type またはその基本データ型に存在しません。

注釈

newExpression プロパティはType、 を実装する型を表すIEnumerable必要があります。

が のnewExpression場合addMethodnull。型またはその基本型は、引数を 1 つだけ受け取る "Add" (大文字と小文字を区別しない) という名前の 1 つのメソッドを宣言する必要があります。 が でないnull場合addMethodは、パラメーターが 1 つだけの "Add" (大文字と小文字は区別されません) という名前のインスタンス メソッドを表す必要があります。 の各要素initializersの プロパティでType表される型は、add メソッドの引数型に割り当て可能である必要があります。

返される ListInitExpression の プロパティにはInitializers、 の要素ごとに型ElementInitの要素initializersが 1 つ含まれています。 ArgumentsInitializers各要素の プロパティは、 の対応する要素initializersを含むシングルトン コレクションです。 の AddMethod 各要素の Initializers プロパティは と addMethod等しくなります。

結果ListInitExpressionの の プロパティは Type と等しくなりますnewExpression。型。

適用対象