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>)
- Source:
- ListInitExpression.cs
- Source:
- ListInitExpression.cs
- Source:
- 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
.Type 不实现 IEnumerable。
示例
以下示例演示如何使用 ListInit(NewExpression, ElementInit[]) 方法创建一个 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")
注解
的 TypenewExpression
属性必须表示实现 的类型 IEnumerable。
Type生成的 ListInitExpression 的 属性等于 newExpression
。类型。
适用于
ListInit(NewExpression, IEnumerable<Expression>)
- Source:
- ListInitExpression.cs
- Source:
- ListInitExpression.cs
- Source:
- 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
.Type 不实现 IEnumerable。
没有在 newExpression
.Type 或其基类型中声明的名为“Add”(不区分大小写)的实例方法。
- 或 -
newExpression
.Type 或其基类型上的 add 方法不采用确切的参数。
- 或 -
由 initializers
的第一个元素的 Type 属性表示的类型不可分配给 newExpression
.Type 或其基类型上 add 方法的参数类型。
- 或 -
newExpression
.Type 和/或其基类型上存在多个名为“Add”(不区分大小写)且与参数兼容的方法。
注解
的 TypenewExpression
属性必须表示实现 的类型 IEnumerable。
为了使用 的 ListInit(NewExpression, IEnumerable<Expression>)此重载。 newExpression
类型或其基类型必须声明一个名为“Add”的单个方法, (不区分大小写的) ,该方法只采用一个参数。 参数的类型必须可从 由 的第一个元素的 属性表示 Type 的类型 initializers
中分配。
Initializers返回ListInitExpression的 的 属性包含每个 元素的 initializers
一个 类型的ElementInit元素。 Arguments的每个元素Initializers的 属性都是一个单一实例集合,其中包含 的相应元素initializers
。 AddMethod的每个 元素Initializers的 属性表示在 上newExpression
发现的 add 方法。类型或其基类型。
Type生成的 ListInitExpression 的 属性等于 newExpression
。类型。
适用于
ListInit(NewExpression, ElementInit[])
- Source:
- ListInitExpression.cs
- Source:
- ListInitExpression.cs
- Source:
- 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
.Type 不实现 IEnumerable。
示例
以下示例演示如何使用 ListInit(NewExpression, ElementInit[]) 方法创建一个 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")
注解
的 TypenewExpression
属性必须表示实现 的类型 IEnumerable。
Type生成的 ListInitExpression 的 属性等于 newExpression
。类型。
适用于
ListInit(NewExpression, Expression[])
- Source:
- ListInitExpression.cs
- Source:
- ListInitExpression.cs
- Source:
- 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
.Type 不实现 IEnumerable。
没有在 newExpression
.Type 或其基类型中声明的名为“Add”(不区分大小写)的实例方法。
- 或 -
newExpression
.Type 或其基类型上的 add 方法不采用确切的参数。
- 或 -
由 initializers
的第一个元素的 Type 属性表示的类型不可分配给 newExpression
.Type 或其基类型上 add 方法的参数类型。
- 或 -
newExpression
.Type 和/或其基类型上存在多个名为“Add”(不区分大小写)且与参数兼容的方法。
注解
的 TypenewExpression
属性必须表示实现 的类型 IEnumerable。
为了使用 的 ListInit(NewExpression, Expression[])此重载。 newExpression
类型或其基类型必须声明一个名为“Add”的单个方法, (不区分大小写的) ,该方法只采用一个参数。 参数的类型必须可从 由 的第一个元素的 属性表示 Type 的类型 initializers
中分配。
Initializers返回ListInitExpression的 的 属性包含每个 元素的 initializers
一个 类型的ElementInit元素。 Arguments的每个元素Initializers的 属性都是一个单一实例集合,其中包含 的相应元素initializers
。 AddMethod的每个 元素Initializers的 属性表示在 上newExpression
发现的 add 方法。类型或其基类型。
Type生成的 ListInitExpression 的 属性等于 newExpression
。类型。
适用于
ListInit(NewExpression, MethodInfo, IEnumerable<Expression>)
- Source:
- ListInitExpression.cs
- Source:
- ListInitExpression.cs
- Source:
- 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
一个 MethodInfo,表示名为“Add”(不区分大小写),用于将元素添加到集合的实例方法。
- initializers
- IEnumerable<Expression>
一个 IEnumerable<T>,包含用来填充 Expression 集合的 Initializers 对象。
返回
一个 ListInitExpression,其 NodeType 属性等于 ListInit,并且其 NewExpression 属性设置为指定值。
例外
newExpression
.Type 不实现 IEnumerable。
- 或 -
addMethod
不为 null
,并且它不表示名为"Add"(不区分大小写)的正好带一个参数的实例方法。
- 或 -
addMethod
不为 null
,并且 Type 的一个或多个元素的 initializers
属性所表示的类型不能赋给 addMethod
所表示的方法的参数类型。
addMethod
为 null
,并且 newExpression
.Type 或其基类型上不存在名为"Add"的带一个兼容类型的参数的任何实例方法。
注解
的 TypenewExpression
属性必须表示实现 的类型 IEnumerable。
如果 为 null
,则newExpression
为 addMethod
。类型或其基类型必须声明一个名为“Add”的单个方法, (不区分大小写的) ,该方法只采用一个参数。 如果 addMethod
不是 null
,则它必须表示名为“Add”的实例方法, (不区分大小写) ,该实例只包含一个参数。 由 的每个元素initializers
的 Type 属性表示的类型必须可分配给 add 方法的参数类型。
Initializers返回ListInitExpression的 的 属性包含每个 元素的 initializers
一个 类型的ElementInit元素。 Arguments的每个元素Initializers的 属性都是一个单一实例集合,其中包含 的相应元素initializers
。 的每个 AddMethod 元素 Initializers 的 属性等于 addMethod
。
Type生成的 ListInitExpression 的 属性等于 newExpression
。类型。
适用于
ListInit(NewExpression, MethodInfo, Expression[])
- Source:
- ListInitExpression.cs
- Source:
- ListInitExpression.cs
- Source:
- 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
一个 MethodInfo,表示带一个参数,用于将元素添加到集合中的实例方法。
- initializers
- Expression[]
用于填充 Expression 集合的 Initializers 对象的数组。
返回
一个 ListInitExpression,其 NodeType 属性等于 ListInit,并且其 NewExpression 属性设置为指定值。
例外
newExpression
.Type 不实现 IEnumerable。
- 或 -
addMethod
不为 null
,并且它不表示名为"Add"(不区分大小写)的正好带一个参数的实例方法。
- 或 -
addMethod
不为 null
,并且 Type 的一个或多个元素的 initializers
属性所表示的类型不能赋给 addMethod
所表示的方法的参数类型。
addMethod
为 null
,并且 newExpression
.Type 或其基类型上不存在名为"Add"的带一个兼容类型的参数的任何实例方法。
注解
的 TypenewExpression
属性必须表示实现 的类型 IEnumerable。
如果 为 null
,则newExpression
为 addMethod
。类型或其基类型必须声明一个名为“Add”的单个方法, (不区分大小写的) ,该方法只采用一个参数。 如果 addMethod
不是 null
,则它必须表示名为“Add”的实例方法, (不区分大小写) ,该实例只包含一个参数。 由 的每个元素initializers
的 Type 属性表示的类型必须可分配给 add 方法的参数类型。
Initializers返回ListInitExpression的 的 属性包含每个 元素的 initializers
一个 类型的ElementInit元素。 Arguments的每个元素Initializers的 属性都是一个单一实例集合,其中包含 的相应元素initializers
。 的每个 AddMethod 元素 Initializers 的 属性等于 addMethod
。
Type生成的 ListInitExpression 的 属性等于 newExpression
。类型。