ListInitExpression 類別
定義
重要
部分資訊涉及發行前產品,在發行之前可能會有大幅修改。 Microsoft 對此處提供的資訊,不做任何明確或隱含的瑕疵擔保。
代表具有集合初始設定式的建構函式呼叫。
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 表示具有兩個索引鍵/值組之新字典實例的初始化。
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")
備註
使用 Factory ListInit 方法來建立 ListInitExpression。
屬性 NodeTypeListInitExpression 值為 ListInit。
屬性
CanReduce |
取得值,指出是否可以減少運算式樹狀架構的節點。 |
CanReduce |
表示節點可精簡為更簡單的節點。 如果傳回 true,則可呼叫 Reduce() 以產生精簡的形式。 (繼承來源 Expression) |
Initializers |
取得可用來初始化集合的項目初始化設定式。 |
NewExpression |
取得運算式,這個運算式包含對集合型別之建構函式的呼叫。 |
NodeType |
傳回這個 Expression 的節點類型。 |
NodeType |
取得這個 Expression 的節點類型。 (繼承來源 Expression) |
Type |
取得此 Expression 代表之運算式的靜態類型。 |
Type |
取得此 Expression 代表之運算式的靜態類型。 (繼承來源 Expression) |
方法
Accept(ExpressionVisitor) |
分派給這個節點類型的特定造訪方法。 例如,MethodCallExpression 會呼叫 VisitMethodCall(MethodCallExpression)。 (繼承來源 Expression) |
Equals(Object) |
判斷指定的物件是否等於目前的物件。 (繼承來源 Object) |
GetHashCode() |
做為預設雜湊函式。 (繼承來源 Object) |
GetType() |
取得目前執行個體的 Type。 (繼承來源 Object) |
MemberwiseClone() |
建立目前 Object 的淺層複製。 (繼承來源 Object) |
Reduce() |
將二進位運算式節點精簡為更簡單的運算式。 |
Reduce() |
將這個節點精簡為更簡單的運算式。 如果 CanReduce 傳回 true,則應該傳回有效的運算式。 這個方法可以傳回其他本身必須精簡的節點。 (繼承來源 Expression) |
ReduceAndCheck() |
將這個節點精簡為更簡單的運算式。 如果 CanReduce 傳回 true,則應該傳回有效的運算式。 這個方法可以傳回其他本身必須精簡的節點。 (繼承來源 Expression) |
ReduceExtensions() |
將運算式精簡為已知的節點類型 (不是 Extension 節點),如果已經是已知的類型,則僅傳回運算式。 (繼承來源 Expression) |
ToString() |
傳回 Expression 的文字表示。 (繼承來源 Expression) |
Update(NewExpression, IEnumerable<ElementInit>) |
建立類似這個運算式的新運算式,但使用提供的子系。 如果所有子系都相同,則會傳回這個運算式。 |
VisitChildren(ExpressionVisitor) |
精簡節點,然後呼叫精簡後的運算式上的訪問項委派。 如果節點無法縮減,此方法會擲回例外狀況。 (繼承來源 Expression) |