ListInitExpression 類別
定義
代表具有集合初始設定式的建構函式呼叫。Represents a constructor call that has a collection initializer.
public ref class ListInitExpression sealed : System::Linq::Expressions::Expression
public sealed class ListInitExpression : System.Linq.Expressions.Expression
type ListInitExpression = class
inherit Expression
Public NotInheritable Class ListInitExpression
Inherits Expression
- 繼承
範例
下列範例 ListInitExpression 會建立,代表具有兩個索引鍵/值組之新字典實例的初始化。The following example creates a ListInitExpression that represents the initialization of a new dictionary instance that has two key-value pairs.
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")
備註
使用 ListInit factory 方法來建立 ListInitExpression 。Use the ListInit factory methods to create a ListInitExpression.
的 NodeType 屬性值 ListInitExpression 為 ListInit 。The value of the NodeType property of a ListInitExpression is ListInit.
屬性
CanReduce |
取得值,指出是否可以減少運算式樹狀架構的節點。Gets a value that indicates whether the expression tree node can be reduced. |
CanReduce |
表示節點可精簡為更簡單的節點。Indicates that the node can be reduced to a simpler node. 如果傳回 true,則可呼叫 Reduce() 以產生精簡的形式。If this returns true, Reduce() can be called to produce the reduced form. (繼承來源 Expression) |
Initializers |
取得可用來初始化集合的項目初始化設定式。Gets the element initializers that are used to initialize a collection. |
NewExpression |
取得運算式,這個運算式包含對集合型別之建構函式的呼叫。Gets the expression that contains a call to the constructor of a collection type. |
NodeType |
傳回這個 Expression 的節點類型。Returns the node type of this Expression. |
NodeType |
取得這個 Expression 的節點類型。Gets the node type of this Expression. (繼承來源 Expression) |
Type |
取得此 Expression 代表之運算式的靜態類型。Gets the static type of the expression that this Expression represents. |
Type |
取得此 Expression 代表之運算式的靜態類型。Gets the static type of the expression that this Expression represents. (繼承來源 Expression) |
方法
Accept(ExpressionVisitor) |
分派給這個節點類型的特定造訪方法。Dispatches to the specific visit method for this node type. 例如,MethodCallExpression 會呼叫 VisitMethodCall(MethodCallExpression)。For example, MethodCallExpression calls the VisitMethodCall(MethodCallExpression). (繼承來源 Expression) |
Equals(Object) |
判斷指定的物件是否等於目前的物件。Determines whether the specified object is equal to the current object. (繼承來源 Object) |
GetHashCode() |
做為預設雜湊函式。Serves as the default hash function. (繼承來源 Object) |
GetType() |
取得目前執行個體的 Type。Gets the Type of the current instance. (繼承來源 Object) |
MemberwiseClone() |
建立目前 Object 的淺層複製。Creates a shallow copy of the current Object. (繼承來源 Object) |
Reduce() |
將二進位運算式節點精簡為更簡單的運算式。Reduces the binary expression node to a simpler expression. |
Reduce() |
將這個節點精簡為更簡單的運算式。Reduces this node to a simpler expression. 如果 CanReduce 傳回 true,則應該傳回有效的運算式。If CanReduce returns true, this should return a valid expression. 這個方法可以傳回其他本身必須精簡的節點。This method can return another node which itself must be reduced. (繼承來源 Expression) |
ReduceAndCheck() |
將這個節點精簡為更簡單的運算式。Reduces this node to a simpler expression. 如果 CanReduce 傳回 true,則應該傳回有效的運算式。If CanReduce returns true, this should return a valid expression. 這個方法可以傳回其他本身必須精簡的節點。This method can return another node which itself must be reduced. (繼承來源 Expression) |
ReduceExtensions() |
將運算式精簡為已知的節點類型 (不是 Extension 節點),如果已經是已知的類型,則僅傳回運算式。Reduces the expression to a known node type (that is not an Extension node) or just returns the expression if it is already a known type. (繼承來源 Expression) |
ToString() |
傳回 Expression 的文字表示。Returns a textual representation of the Expression. (繼承來源 Expression) |
Update(NewExpression, IEnumerable<ElementInit>) |
建立類似這個運算式的新運算式,但使用提供的子系。Creates a new expression that is like this one, but using the supplied children. 如果所有子系都相同,則會傳回這個運算式。If all of the children are the same, it will return this expression. |
VisitChildren(ExpressionVisitor) |
精簡節點,然後呼叫精簡後的運算式上的訪問項委派。Reduces the node and then calls the visitor delegate on the reduced expression. 如果節點無法縮減,此方法會擲回例外狀況。The method throws an exception if the node is not reducible. (繼承來源 Expression) |