Expression.ListInit Metodo

Definizione

Crea un oggetto ListInitExpression.

Overload

ListInit(NewExpression, IEnumerable<ElementInit>)

Crea un oggetto ListInitExpression che usa gli oggetti ElementInit specificati per inizializzare una raccolta.

ListInit(NewExpression, IEnumerable<Expression>)

Crea un oggetto ListInitExpression che usa un metodo denominato "Add" per aggiungere elementi a una raccolta.

ListInit(NewExpression, ElementInit[])

Crea un oggetto ListInitExpression che usa gli oggetti ElementInit specificati per inizializzare una raccolta.

ListInit(NewExpression, Expression[])

Crea un oggetto ListInitExpression che usa un metodo denominato "Add" per aggiungere elementi a una raccolta.

ListInit(NewExpression, MethodInfo, IEnumerable<Expression>)

Crea un oggetto ListInitExpression che usa un metodo specificato per aggiungere elementi a una raccolta.

ListInit(NewExpression, MethodInfo, Expression[])

Crea un oggetto ListInitExpression che usa un metodo specificato per aggiungere elementi a una raccolta.

ListInit(NewExpression, IEnumerable<ElementInit>)

Crea un oggetto ListInitExpression che usa gli oggetti ElementInit specificati per inizializzare una raccolta.

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

Parametri

newExpression
NewExpression

Oggetto NewExpression su cui impostare la proprietà NewExpression.

initializers
IEnumerable<ElementInit>

Oggetto IEnumerable<T> contenente gli oggetti ElementInit da usare per popolare la raccolta Initializers.

Restituisce

Oggetto ListInitExpression la cui proprietà NodeType è uguale a ListInit e le cui proprietà NewExpression e Initializers sono impostate sui valori specificati.

Eccezioni

newExpression o initializers è null.

-oppure-

Uno o più elementi di initializers sono null.

newExpression.Type non implementa IEnumerable.

Esempio

Nell'esempio seguente viene illustrato come usare il ListInit(NewExpression, ElementInit[]) metodo per creare un ListInitExpression oggetto che rappresenta l'inizializzazione di una nuova istanza del dizionario con due coppie chiave-valore.

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

Commenti

La Type proprietà di newExpression deve rappresentare un tipo che implementa IEnumerable.

La Type proprietà del risultato ListInitExpression è uguale a newExpression. Digitare.

Si applica a

ListInit(NewExpression, IEnumerable<Expression>)

Crea un oggetto ListInitExpression che usa un metodo denominato "Add" per aggiungere elementi a una raccolta.

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

Parametri

newExpression
NewExpression

Oggetto NewExpression su cui impostare la proprietà NewExpression.

initializers
IEnumerable<Expression>

Oggetto IEnumerable<T> contenente gli oggetti Expression da usare per popolare la raccolta Initializers.

Restituisce

Oggetto ListInitExpression la cui proprietà NodeType è uguale a ListInit e la cui proprietà NewExpression è impostata sul valore specificato.

Eccezioni

newExpression o initializers è null.

-oppure-

Uno o più elementi di initializers sono null.

newExpression.Type non implementa IEnumerable.

Non esiste alcun metodo di istanza denominato "Add" (senza distinzione tra maiuscole e minuscole) dichiarato in newExpression.Type o nel relativo tipo di base.

-oppure-

Il metodo Add in newExpression.Type o nel relativo tipo di base non accetta esattamente un solo argomento.

-oppure-

Il tipo rappresentato dalla proprietà Type del primo elemento di initializers non è assegnabile al tipo di argomento del metodo Add in newExpression.Type o nel relativo tipo di base.

-oppure-

In newExpression.Type e/o nel relativo tipo di base sono presenti più metodi denominati "Add" (senza distinzione tra maiuscole e minuscole) compatibili con un solo argomento.

Commenti

La Type proprietà di newExpression deve rappresentare un tipo che implementa IEnumerable.

Per usare questo overload di ListInit(NewExpression, IEnumerable<Expression>), newExpression. Il tipo o il tipo di base devono dichiarare un singolo metodo denominato "Add" (senza distinzione tra maiuscole e minuscole) che accetta esattamente un argomento. Il tipo dell'argomento deve essere assegnabile dal tipo rappresentato dalla Type proprietà del primo elemento di initializers.

La Initializers proprietà del restituito ListInitExpression contiene un elemento di tipo ElementInit per ogni elemento di initializers. La Arguments proprietà di ogni elemento di Initializers è un insieme singleton che contiene l'elemento corrispondente di initializers. La AddMethod proprietà di ogni elemento di Initializers rappresenta il metodo add individuato in newExpression. Digitare o il relativo tipo di base.

La Type proprietà del risultato ListInitExpression è uguale a newExpression. Digitare.

Si applica a

ListInit(NewExpression, ElementInit[])

Crea un oggetto ListInitExpression che usa gli oggetti ElementInit specificati per inizializzare una raccolta.

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

Parametri

newExpression
NewExpression

Oggetto NewExpression su cui impostare la proprietà NewExpression.

initializers
ElementInit[]

Matrice di oggetti ElementInit da usare per popolare la raccolta Initializers.

Restituisce

Oggetto ListInitExpression la cui proprietà NodeType è uguale a ListInit e le cui proprietà NewExpression e Initializers sono impostate sui valori specificati.

Eccezioni

newExpression o initializers è null.

-oppure-

Uno o più elementi di initializers sono null.

newExpression.Type non implementa IEnumerable.

Esempio

Nell'esempio seguente viene illustrato come usare il ListInit(NewExpression, ElementInit[]) metodo per creare un ListInitExpression oggetto che rappresenta l'inizializzazione di una nuova istanza del dizionario con due coppie chiave-valore.

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

Commenti

La Type proprietà di newExpression deve rappresentare un tipo che implementa IEnumerable.

La Type proprietà del risultato ListInitExpression è uguale a newExpression. Digitare.

Si applica a

ListInit(NewExpression, Expression[])

Crea un oggetto ListInitExpression che usa un metodo denominato "Add" per aggiungere elementi a una raccolta.

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

Parametri

newExpression
NewExpression

Oggetto NewExpression su cui impostare la proprietà NewExpression.

initializers
Expression[]

Matrice di oggetti Expression da usare per popolare la raccolta Initializers.

Restituisce

Oggetto ListInitExpression la cui proprietà NodeType è uguale a ListInit e la cui proprietà NewExpression è impostata sul valore specificato.

Eccezioni

newExpression o initializers è null.

-oppure-

Uno o più elementi di initializers sono null.

newExpression.Type non implementa IEnumerable.

Non esiste alcun metodo di istanza denominato "Add" (senza distinzione tra maiuscole e minuscole) dichiarato in newExpression.Type o nel relativo tipo di base.

-oppure-

Il metodo Add in newExpression.Type o nel relativo tipo di base non accetta esattamente un solo argomento.

-oppure-

Il tipo rappresentato dalla proprietà Type del primo elemento di initializers non è assegnabile al tipo di argomento del metodo Add in newExpression.Type o nel relativo tipo di base.

-oppure-

In newExpression.Type e/o nel relativo tipo di base sono presenti più metodi denominati "Add" (senza distinzione tra maiuscole e minuscole) compatibili con un solo argomento.

Commenti

La Type proprietà di newExpression deve rappresentare un tipo che implementa IEnumerable.

Per usare questo overload di ListInit(NewExpression, Expression[]), newExpression. Il tipo o il tipo di base devono dichiarare un singolo metodo denominato "Add" (senza distinzione tra maiuscole e minuscole) che accetta esattamente un argomento. Il tipo dell'argomento deve essere assegnabile dal tipo rappresentato dalla Type proprietà del primo elemento di initializers.

La Initializers proprietà del restituito ListInitExpression contiene un elemento di tipo ElementInit per ogni elemento di initializers. La Arguments proprietà di ogni elemento di Initializers è un insieme singleton che contiene l'elemento corrispondente di initializers. La AddMethod proprietà di ogni elemento di Initializers rappresenta il metodo add individuato in newExpression. Digitare o il relativo tipo di base.

La Type proprietà del risultato ListInitExpression è uguale a newExpression. Digitare.

Si applica a

ListInit(NewExpression, MethodInfo, IEnumerable<Expression>)

Crea un oggetto ListInitExpression che usa un metodo specificato per aggiungere elementi a una raccolta.

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

Parametri

newExpression
NewExpression

Oggetto NewExpression su cui impostare la proprietà NewExpression.

addMethod
MethodInfo

Oggetto MethodInfo che rappresenta un metodo di istanza denominato "Add" (senza distinzione tra maiuscole e minuscole) che aggiunge un elemento a una raccolta.

initializers
IEnumerable<Expression>

Oggetto IEnumerable<T> contenente gli oggetti Expression da usare per popolare la raccolta Initializers.

Restituisce

Oggetto ListInitExpression la cui proprietà NodeType è uguale a ListInit e la cui proprietà NewExpression è impostata sul valore specificato.

Eccezioni

newExpression o initializers è null.

-oppure-

Uno o più elementi di initializers sono null.

newExpression.Type non implementa IEnumerable.

-oppure-

addMethod non è null e non rappresenta un metodo di istanza denominato "Add" (senza distinzione tra maiuscole e minuscole) che accetta esattamente un argomento.

-oppure-

addMethod non è null e il tipo rappresentato dalla proprietà Type di uno o più elementi di initializers non è assegnabile al tipo di argomento del metodo rappresentato da addMethod.

addMethod è null e non esiste alcun metodo di istanza denominato "Add" che accetta un argomento compatibile con il tipo su newExpression.Type o sul relativo tipo di base.

Commenti

La Type proprietà di newExpression deve rappresentare un tipo che implementa IEnumerable.

Se addMethod è null, newExpression. Il tipo o il tipo di base devono dichiarare un singolo metodo denominato "Add" (senza distinzione tra maiuscole e minuscole) che accetta esattamente un argomento. Se addMethod non nullè , deve rappresentare un metodo di istanza denominato "Add" (senza distinzione tra maiuscole e minuscole) con esattamente un parametro. Il tipo rappresentato dalla Type proprietà di ogni elemento di deve essere assegnabile al tipo di initializers argomento del metodo add.

La Initializers proprietà del restituito ListInitExpression contiene un elemento di tipo ElementInit per ogni elemento di initializers. La Arguments proprietà di ogni elemento di Initializers è un insieme singleton che contiene l'elemento corrispondente di initializers. La AddMethod proprietà di ogni elemento di Initializers è uguale a addMethod.

La Type proprietà del risultato ListInitExpression è uguale a newExpression. Digitare.

Si applica a

ListInit(NewExpression, MethodInfo, Expression[])

Crea un oggetto ListInitExpression che usa un metodo specificato per aggiungere elementi a una raccolta.

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

Parametri

newExpression
NewExpression

Oggetto NewExpression su cui impostare la proprietà NewExpression.

addMethod
MethodInfo

Oggetto MethodInfo che rappresenta un metodo di istanza che accetta un argomento e aggiunge un elemento a una raccolta.

initializers
Expression[]

Matrice di oggetti Expression da usare per popolare la raccolta Initializers.

Restituisce

Oggetto ListInitExpression la cui proprietà NodeType è uguale a ListInit e la cui proprietà NewExpression è impostata sul valore specificato.

Eccezioni

newExpression o initializers è null.

-oppure-

Uno o più elementi di initializers sono null.

newExpression.Type non implementa IEnumerable.

-oppure-

addMethod non è null e non rappresenta un metodo di istanza denominato "Add" (senza distinzione tra maiuscole e minuscole) che accetta esattamente un argomento.

-oppure-

addMethod non è null e il tipo rappresentato dalla proprietà Type di uno o più elementi di initializers non è assegnabile al tipo di argomento del metodo rappresentato da addMethod.

addMethod è null e non esiste alcun metodo di istanza denominato "Add" che accetta un argomento compatibile con il tipo su newExpression.Type o sul relativo tipo di base.

Commenti

La Type proprietà di newExpression deve rappresentare un tipo che implementa IEnumerable.

Se addMethod è null, newExpression. Il tipo o il tipo di base devono dichiarare un singolo metodo denominato "Add" (senza distinzione tra maiuscole e minuscole) che accetta esattamente un argomento. Se addMethod non nullè , deve rappresentare un metodo di istanza denominato "Add" (senza distinzione tra maiuscole e minuscole) con esattamente un parametro. Il tipo rappresentato dalla Type proprietà di ogni elemento di deve essere assegnabile al tipo di initializers argomento del metodo add.

La Initializers proprietà del restituito ListInitExpression contiene un elemento di tipo ElementInit per ogni elemento di initializers. La Arguments proprietà di ogni elemento di Initializers è un insieme singleton che contiene l'elemento corrispondente di initializers. La AddMethod proprietà di ogni elemento di Initializers è uguale a addMethod.

La Type proprietà del risultato ListInitExpression è uguale a newExpression. Digitare.

Si applica a