Expression.ListInit メソッド
定義
重要
一部の情報は、リリース前に大きく変更される可能性があるプレリリースされた製品に関するものです。 Microsoft は、ここに記載されている情報について、明示または黙示を問わず、一切保証しません。
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 オブジェクトを使用してコレクションを初期化する 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
または initializers
が null
です。
- または -
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>)
"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
または initializers
が null
です。
- または -
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 つ含まれています。 ArgumentsのInitializers各要素の プロパティは、 の対応する要素initializers
を含むシングルトン コレクションです。 の各要素Initializersの プロパティはAddMethod、 で検出された add メソッドをnewExpression
表します。型またはその基本型。
Type結果ListInitExpressionの の プロパティは とnewExpression
等しくなります。型。
適用対象
ListInit(NewExpression, ElementInit[])
指定した 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
または initializers
が null
です。
- または -
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[])
"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
または initializers
が null
です。
- または -
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 つ含まれています。 ArgumentsのInitializers各要素の プロパティは、 の対応する要素initializers
を含むシングルトン コレクションです。 の各要素Initializersの プロパティはAddMethod、 で検出された add メソッドをnewExpression
表します。型またはその基本型。
Type結果ListInitExpressionの の プロパティは とnewExpression
等しくなります。型。
適用対象
ListInit(NewExpression, MethodInfo, IEnumerable<Expression>)
指定したメソッドを使用してコレクションに要素を追加する 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
または initializers
が null
です。
- または -
initializers
の 1 つ以上の要素が null
です。
newExpression
.Type は IEnumerable を実装していません。
- または -
addMethod
は null
ではなく、受け取る引数が 1 つだけの "Add" (大文字と小文字は区別されません) という名前のインスタンス メソッドを表しません。
- または -
addMethod
は null
ではなく、initializers
の 1 つ以上の要素の Type プロパティによって表される型を addMethod
が表すメソッドの引数型に代入することはできません。
addMethod
は null
で、1 つの型互換の引数を受け取る "Add" という名前のインスタンス メソッドが newExpression
.Type またはその基本データ型に存在しません。
注釈
の newExpression
プロパティはType、 を実装する型を表すIEnumerable必要があります。
が のnewExpression
場合addMethod
は null
。型またはその基本型では、引数を 1 つだけ受け取る "Add" (大文字と小文字を区別しない) という名前の 1 つのメソッドを宣言する必要があります。 が でないnull
場合addMethod
は、パラメーターが 1 つだけの "Add" (大文字と小文字を区別しない) という名前のインスタンス メソッドを表す必要があります。 の各要素initializers
の プロパティでType表される型は、add メソッドの引数型に割り当て可能である必要があります。
返される ListInitExpression の プロパティにはInitializers、 の要素ごとに型ElementInitの要素initializers
が 1 つ含まれています。 ArgumentsのInitializers各要素の プロパティは、 の対応する要素initializers
を含むシングルトン コレクションです。 の AddMethod 各要素 Initializers の プロパティは と addMethod
等しくなります。
結果ListInitExpressionの の プロパティは Type と等しくなりますnewExpression
。型。
適用対象
ListInit(NewExpression, MethodInfo, Expression[])
指定したメソッドを使用してコレクションに要素を追加する 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
または initializers
が null
です。
- または -
initializers
の 1 つ以上の要素が null
です。
newExpression
.Type は IEnumerable を実装していません。
- または -
addMethod
は null
ではなく、受け取る引数が 1 つだけの "Add" (大文字と小文字は区別されません) という名前のインスタンス メソッドを表しません。
- または -
addMethod
は null
ではなく、initializers
の 1 つ以上の要素の Type プロパティによって表される型を addMethod
が表すメソッドの引数型に代入することはできません。
addMethod
は null
で、1 つの型互換の引数を受け取る "Add" という名前のインスタンス メソッドが newExpression
.Type またはその基本データ型に存在しません。
注釈
の newExpression
プロパティはType、 を実装する型を表すIEnumerable必要があります。
が のnewExpression
場合addMethod
は null
。型またはその基本型は、引数を 1 つだけ受け取る "Add" (大文字と小文字を区別しない) という名前の 1 つのメソッドを宣言する必要があります。 が でないnull
場合addMethod
は、パラメーターが 1 つだけの "Add" (大文字と小文字は区別されません) という名前のインスタンス メソッドを表す必要があります。 の各要素initializers
の プロパティでType表される型は、add メソッドの引数型に割り当て可能である必要があります。
返される ListInitExpression の プロパティにはInitializers、 の要素ごとに型ElementInitの要素initializers
が 1 つ含まれています。 ArgumentsのInitializers各要素の プロパティは、 の対応する要素initializers
を含むシングルトン コレクションです。 の AddMethod 各要素の Initializers プロパティは と addMethod
等しくなります。
結果ListInitExpressionの の プロパティは Type と等しくなりますnewExpression
。型。
適用対象
.NET