Expression.ListInit Methode

Definitie

Hiermee maak je een ListInitExpression.

Overloads

Name Description
ListInit(NewExpression, IEnumerable<ElementInit>)

Hiermee maakt u een ListInitExpression verzameling die gebruikmaakt van opgegeven ElementInit objecten om een verzameling te initialiseren.

ListInit(NewExpression, IEnumerable<Expression>)

Hiermee maakt u een ListInitExpression methode met de naam 'Toevoegen' om elementen toe te voegen aan een verzameling.

ListInit(NewExpression, ElementInit[])

Hiermee maakt u een ListInitExpression verzameling die gebruikmaakt van opgegeven ElementInit objecten om een verzameling te initialiseren.

ListInit(NewExpression, Expression[])

Hiermee maakt u een ListInitExpression methode met de naam 'Toevoegen' om elementen toe te voegen aan een verzameling.

ListInit(NewExpression, MethodInfo, IEnumerable<Expression>)

Hiermee maakt u een ListInitExpression methode die gebruikmaakt van een opgegeven methode om elementen toe te voegen aan een verzameling.

ListInit(NewExpression, MethodInfo, Expression[])

Hiermee maakt u een ListInitExpression methode die gebruikmaakt van een opgegeven methode om elementen toe te voegen aan een verzameling.

ListInit(NewExpression, IEnumerable<ElementInit>)

Hiermee maakt u een ListInitExpression verzameling die gebruikmaakt van opgegeven ElementInit objecten om een verzameling te initialiseren.

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

Parameters

newExpression
NewExpression

A NewExpression om de NewExpression eigenschap in te stellen die gelijk is aan.

initializers
IEnumerable<ElementInit>

Een IEnumerable<T> met ElementInit objecten die moeten worden gebruikt om de Initializers verzameling te vullen.

Retouren

Een ListInitExpression met de NodeType eigenschap gelijk aan ListInit en de NewExpression eigenschappen die Initializers zijn ingesteld op de opgegeven waarden.

Uitzonderingen

newExpression of initializers is null.

– of –

Een of meer elementen van initializers zijn null.

newExpression. Het type wordt niet geïmplementeerd IEnumerable.

Voorbeelden

In het volgende voorbeeld ziet u hoe u de ListInit(NewExpression, ElementInit[]) methode gebruikt om een ListInitExpression methode te maken die de initialisatie van een nieuw woordenlijstexemplaren vertegenwoordigt met twee sleutel-waardeparen.

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")

Opmerkingen

De Type eigenschap van newExpression moet een type vertegenwoordigen IEnumerabledat wordt geïmplementeerd.

De Type eigenschap van het resultaat ListInitExpression is gelijk aan newExpression. Type.

Van toepassing op

ListInit(NewExpression, IEnumerable<Expression>)

Hiermee maakt u een ListInitExpression methode met de naam 'Toevoegen' om elementen toe te voegen aan een verzameling.

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

Parameters

newExpression
NewExpression

A NewExpression om de NewExpression eigenschap in te stellen die gelijk is aan.

initializers
IEnumerable<Expression>

Een IEnumerable<T> met Expression objecten die moeten worden gebruikt om de Initializers verzameling te vullen.

Retouren

Een ListInitExpression met de NodeType eigenschap die gelijk is aan ListInit en de NewExpression eigenschap is ingesteld op de opgegeven waarde.

Uitzonderingen

newExpression of initializers is null.

– of –

Een of meer elementen van initializers zijn null.

newExpression. Het type wordt niet geïmplementeerd IEnumerable.

Er is geen exemplaarmethode met de naam Add (niet hoofdlettergevoelig) die is gedeclareerd in newExpression. Typ of het basistype.

– of –

De methode voor toevoegen op newExpression. Het type of het basistype ervan neemt niet precies één argument in beslag.

– of –

Het type dat wordt vertegenwoordigd door de Type eigenschap van het eerste element, initializers kan niet worden toegewezen aan het argumenttype van de methode voor toevoegen. newExpression Typ of het basistype.

– of –

Er bestaat newExpressionmeer dan één argument-compatibele methode met de naam Add (hoofdlettergevoelig). Typ en/of het basistype.

Opmerkingen

De Type eigenschap van newExpression moet een type vertegenwoordigen IEnumerabledat wordt geïmplementeerd.

Om deze overbelasting van ListInit(NewExpression, IEnumerable<Expression>), newExpressionte gebruiken . Het type of het bijbehorende basistype moet één methode met de naam Add (niet hoofdlettergevoelig) declareren die precies één argument gebruikt. Het type van het argument moet worden toegewezen aan het type dat wordt vertegenwoordigd door de Type eigenschap van het eerste element van initializers.

De Initializers eigenschap van de geretourneerde ListInitExpression bevat één element van het type ElementInit voor elk element van initializers. De Arguments eigenschap van elk element van Initializers is een singleton-verzameling die het bijbehorende element bevat initializers. De AddMethod eigenschap van elk element van Initializers het element vertegenwoordigt de methode voor toevoegen die is gedetecteerd op newExpression. Typ of het basistype.

De Type eigenschap van het resultaat ListInitExpression is gelijk aan newExpression. Type.

Van toepassing op

ListInit(NewExpression, ElementInit[])

Hiermee maakt u een ListInitExpression verzameling die gebruikmaakt van opgegeven ElementInit objecten om een verzameling te initialiseren.

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

Parameters

newExpression
NewExpression

A NewExpression om de NewExpression eigenschap in te stellen die gelijk is aan.

initializers
ElementInit[]

Een matrix met ElementInit objecten die moeten worden gebruikt om de Initializers verzameling te vullen.

Retouren

Een ListInitExpression met de NodeType eigenschap gelijk aan ListInit en de NewExpression eigenschappen die Initializers zijn ingesteld op de opgegeven waarden.

Uitzonderingen

newExpression of initializers is null.

– of –

Een of meer elementen van initializers zijn null.

newExpression. Het type wordt niet geïmplementeerd IEnumerable.

Voorbeelden

In het volgende voorbeeld ziet u hoe u de ListInit(NewExpression, ElementInit[]) methode gebruikt om een ListInitExpression methode te maken die de initialisatie van een nieuw woordenlijstexemplaren vertegenwoordigt met twee sleutel-waardeparen.

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")

Opmerkingen

De Type eigenschap van newExpression moet een type vertegenwoordigen IEnumerabledat wordt geïmplementeerd.

De Type eigenschap van het resultaat ListInitExpression is gelijk aan newExpression. Type.

Van toepassing op

ListInit(NewExpression, Expression[])

Hiermee maakt u een ListInitExpression methode met de naam 'Toevoegen' om elementen toe te voegen aan een verzameling.

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

Parameters

newExpression
NewExpression

A NewExpression om de NewExpression eigenschap in te stellen die gelijk is aan.

initializers
Expression[]

Een matrix met Expression objecten die moeten worden gebruikt om de Initializers verzameling te vullen.

Retouren

Een ListInitExpression met de NodeType eigenschap die gelijk is aan ListInit en de NewExpression eigenschap is ingesteld op de opgegeven waarde.

Uitzonderingen

newExpression of initializers is null.

– of –

Een of meer elementen van initializers zijn null.

newExpression. Het type wordt niet geïmplementeerd IEnumerable.

Er is geen exemplaarmethode met de naam Add (niet hoofdlettergevoelig) die is gedeclareerd in newExpression. Typ of het basistype.

– of –

De methode voor toevoegen op newExpression. Het type of het basistype ervan neemt niet precies één argument in beslag.

– of –

Het type dat wordt vertegenwoordigd door de Type eigenschap van het eerste element, initializers kan niet worden toegewezen aan het argumenttype van de methode voor toevoegen. newExpression Typ of het basistype.

– of –

Er bestaat newExpressionmeer dan één argument-compatibele methode met de naam Add (hoofdlettergevoelig). Typ en/of het basistype.

Opmerkingen

De Type eigenschap van newExpression moet een type vertegenwoordigen IEnumerabledat wordt geïmplementeerd.

Om deze overbelasting van ListInit(NewExpression, Expression[]), newExpressionte gebruiken . Het type of het bijbehorende basistype moet één methode met de naam Add (niet hoofdlettergevoelig) declareren die precies één argument gebruikt. Het type van het argument moet worden toegewezen aan het type dat wordt vertegenwoordigd door de Type eigenschap van het eerste element van initializers.

De Initializers eigenschap van de geretourneerde ListInitExpression bevat één element van het type ElementInit voor elk element van initializers. De Arguments eigenschap van elk element van Initializers is een singleton-verzameling die het bijbehorende element bevat initializers. De AddMethod eigenschap van elk element van Initializers het element vertegenwoordigt de methode voor toevoegen die is gedetecteerd op newExpression. Typ of het basistype.

De Type eigenschap van het resultaat ListInitExpression is gelijk aan newExpression. Type.

Van toepassing op

ListInit(NewExpression, MethodInfo, IEnumerable<Expression>)

Hiermee maakt u een ListInitExpression methode die gebruikmaakt van een opgegeven methode om elementen toe te voegen aan een verzameling.

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

Parameters

newExpression
NewExpression

A NewExpression om de NewExpression eigenschap in te stellen die gelijk is aan.

addMethod
MethodInfo

Een MethodInfo die een instantiemethode vertegenwoordigt met de naam Add (niet hoofdlettergevoelig), waarmee een element wordt toegevoegd aan een verzameling.

initializers
IEnumerable<Expression>

Een IEnumerable<T> met Expression objecten die moeten worden gebruikt om de Initializers verzameling te vullen.

Retouren

Een ListInitExpression met de NodeType eigenschap die gelijk is aan ListInit en de NewExpression eigenschap is ingesteld op de opgegeven waarde.

Uitzonderingen

newExpression of initializers is null.

– of –

Een of meer elementen van initializers zijn null.

newExpression. Het type wordt niet geïmplementeerd IEnumerable.

– of –

addMethod is niet null en het vertegenwoordigt geen exemplaarmethode met de naam Add (hoofdlettergevoelig) die precies één argument gebruikt.

– of –

addMethod is niet null en het type dat wordt vertegenwoordigd door de Type eigenschap van een of meer elementen van initializers is niet toe te wijzen aan het argumenttype van de methode die addMethod vertegenwoordigt.

addMethod is null en geen exemplaarmethode met de naam 'Toevoegen' waarvoor één type-compatibel argument bestaat newExpression. Typ of het basistype.

Opmerkingen

De Type eigenschap van newExpression moet een type vertegenwoordigen IEnumerabledat wordt geïmplementeerd.

Als addMethod dat het is null, newExpression. Het type of het bijbehorende basistype moet één methode met de naam Add (niet hoofdlettergevoelig) declareren die precies één argument gebruikt. Als addMethod dit niet nullhet geval is, moet het een exemplaarmethode met de naam Add (niet hoofdlettergevoelig) vertegenwoordigen die precies één parameter heeft. Het type dat wordt vertegenwoordigd door de Type eigenschap van elk element van initializers elk element, moet kunnen worden toegewezen aan het argumenttype van de add-methode.

De Initializers eigenschap van de geretourneerde ListInitExpression bevat één element van het type ElementInit voor elk element van initializers. De Arguments eigenschap van elk element van Initializers is een singleton-verzameling die het bijbehorende element bevat initializers. De AddMethod eigenschap van elk element is Initializers gelijk aan addMethod.

De Type eigenschap van het resultaat ListInitExpression is gelijk aan newExpression. Type.

Van toepassing op

ListInit(NewExpression, MethodInfo, Expression[])

Hiermee maakt u een ListInitExpression methode die gebruikmaakt van een opgegeven methode om elementen toe te voegen aan een verzameling.

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);
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

Parameters

newExpression
NewExpression

A NewExpression om de NewExpression eigenschap in te stellen die gelijk is aan.

addMethod
MethodInfo

Een MethodInfo methode die een exemplaarmethode vertegenwoordigt die één argument gebruikt, waarmee een element wordt toegevoegd aan een verzameling.

initializers
Expression[]

Een matrix met Expression objecten die moeten worden gebruikt om de Initializers verzameling te vullen.

Retouren

Een ListInitExpression met de NodeType eigenschap die gelijk is aan ListInit en de NewExpression eigenschap is ingesteld op de opgegeven waarde.

Uitzonderingen

newExpression of initializers is null.

– of –

Een of meer elementen van initializers zijn null.

newExpression. Het type wordt niet geïmplementeerd IEnumerable.

– of –

addMethod is niet null en het vertegenwoordigt geen exemplaarmethode met de naam Add (hoofdlettergevoelig) die precies één argument gebruikt.

– of –

addMethod is niet null en het type dat wordt vertegenwoordigd door de Type eigenschap van een of meer elementen van initializers is niet toe te wijzen aan het argumenttype van de methode die addMethod vertegenwoordigt.

addMethod is null en geen exemplaarmethode met de naam 'Toevoegen' waarvoor één type-compatibel argument bestaat newExpression. Typ of het basistype.

Opmerkingen

De Type eigenschap van newExpression moet een type vertegenwoordigen IEnumerabledat wordt geïmplementeerd.

Als addMethod dat het is null, newExpression. Het type of het bijbehorende basistype moet één methode met de naam Add (niet hoofdlettergevoelig) declareren die precies één argument gebruikt. Als addMethod dit niet nullhet geval is, moet het een exemplaarmethode met de naam Add (niet hoofdlettergevoelig) vertegenwoordigen die precies één parameter heeft. Het type dat wordt vertegenwoordigd door de Type eigenschap van elk element van initializers elk element, moet kunnen worden toegewezen aan het argumenttype van de add-methode.

De Initializers eigenschap van de geretourneerde ListInitExpression bevat één element van het type ElementInit voor elk element van initializers. De Arguments eigenschap van elk element van Initializers is een singleton-verzameling die het bijbehorende element bevat initializers. De AddMethod eigenschap van elk element is Initializers gelijk aan addMethod.

De Type eigenschap van het resultaat ListInitExpression is gelijk aan newExpression. Type.

Van toepassing op