Expression.ListInit Metod

Definition

Skapar en ListInitExpression.

Överlagringar

Name Description
ListInit(NewExpression, IEnumerable<ElementInit>)

Skapar en ListInitExpression som använder angivna ElementInit objekt för att initiera en samling.

ListInit(NewExpression, IEnumerable<Expression>)

Skapar en ListInitExpression som använder en metod med namnet "Lägg till" för att lägga till element i en samling.

ListInit(NewExpression, ElementInit[])

Skapar en ListInitExpression som använder angivna ElementInit objekt för att initiera en samling.

ListInit(NewExpression, Expression[])

Skapar en ListInitExpression som använder en metod med namnet "Lägg till" för att lägga till element i en samling.

ListInit(NewExpression, MethodInfo, IEnumerable<Expression>)

Skapar en ListInitExpression som använder en angiven metod för att lägga till element i en samling.

ListInit(NewExpression, MethodInfo, Expression[])

Skapar en ListInitExpression som använder en angiven metod för att lägga till element i en samling.

ListInit(NewExpression, IEnumerable<ElementInit>)

Skapar en ListInitExpression som använder angivna ElementInit objekt för att initiera en samling.

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

Parametrar

newExpression
NewExpression

A NewExpression för att ange egenskapen NewExpression lika med.

initializers
IEnumerable<ElementInit>

En IEnumerable<T> som innehåller ElementInit objekt som ska användas för att fylla samlingen Initializers .

Returer

En ListInitExpression som har egenskapen NodeType lika med ListInit och NewExpression egenskaperna och Initializers inställda på de angivna värdena.

Undantag

newExpression eller initializers är null.

-eller-

Ett eller flera element i initializers är null.

newExpression. Typen implementerar IEnumerableinte .

Exempel

I följande exempel visas hur du använder ListInit(NewExpression, ElementInit[]) metoden för att skapa en ListInitExpression som representerar initieringen av en ny ordlisteinstans med två nyckel/värde-par.

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

Kommentarer

Egenskapen TypenewExpression för måste representera en typ som implementerar IEnumerable.

Egenskapen Type för resultatet ListInitExpression är lika med newExpression. Typ.

Gäller för

ListInit(NewExpression, IEnumerable<Expression>)

Skapar en ListInitExpression som använder en metod med namnet "Lägg till" för att lägga till element i en samling.

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

Parametrar

newExpression
NewExpression

A NewExpression för att ange egenskapen NewExpression lika med.

initializers
IEnumerable<Expression>

En IEnumerable<T> som innehåller Expression objekt som ska användas för att fylla samlingen Initializers .

Returer

En ListInitExpression som har egenskapen NodeType lika med ListInit och egenskapen NewExpression inställd på det angivna värdet.

Undantag

newExpression eller initializers är null.

-eller-

Ett eller flera element i initializers är null.

newExpression. Typen implementerar IEnumerableinte .

Det finns ingen instansmetod med namnet "Lägg till" (skiftlägesokänslig) som deklareras i newExpression. Typ eller bastyp.

-eller-

Lägg till -metoden på newExpression. Typ eller dess bastyp tar inte exakt ett argument.

-eller-

Den typ som representeras av Type egenskapen för det första elementet initializers i kan inte tilldelas till argumenttypen för add-metoden på newExpression. Typ eller bastyp.

-eller-

Mer än en argumentkompatibel metod med namnet "Lägg till" (skiftlägesokänslig) finns på newExpression. Skriv och/eller dess bastyp.

Kommentarer

Egenskapen TypenewExpression för måste representera en typ som implementerar IEnumerable.

För att använda den här överlagringen av ListInit(NewExpression, IEnumerable<Expression>), newExpression. Typen eller dess bastyp måste deklarera en enskild metod med namnet "Lägg till" (skiftlägesokänslig) som tar exakt ett argument. Argumentets typ måste kunna tilldelas från den typ som representeras av Type egenskapen för det första elementet i initializers.

Egenskapen Initializers för den returnerade ListInitExpression innehåller ett element av typen ElementInit för varje element i initializers. Egenskapen Arguments för varje element Initializers i är en singleton-samling som innehåller motsvarande element i initializers. Egenskapen AddMethod för varje element Initializers i representerar den lägg till-metod som identifierades på newExpression. Typ eller bastyp.

Egenskapen Type för resultatet ListInitExpression är lika med newExpression. Typ.

Gäller för

ListInit(NewExpression, ElementInit[])

Skapar en ListInitExpression som använder angivna ElementInit objekt för att initiera en samling.

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

Parametrar

newExpression
NewExpression

A NewExpression för att ange egenskapen NewExpression lika med.

initializers
ElementInit[]

En matris med ElementInit objekt som ska användas för att fylla samlingen Initializers .

Returer

En ListInitExpression som har egenskapen NodeType lika med ListInit och NewExpression egenskaperna och Initializers inställda på de angivna värdena.

Undantag

newExpression eller initializers är null.

-eller-

Ett eller flera element i initializers är null.

newExpression. Typen implementerar IEnumerableinte .

Exempel

I följande exempel visas hur du använder ListInit(NewExpression, ElementInit[]) metoden för att skapa en ListInitExpression som representerar initieringen av en ny ordlisteinstans med två nyckel/värde-par.

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

Kommentarer

Egenskapen TypenewExpression för måste representera en typ som implementerar IEnumerable.

Egenskapen Type för resultatet ListInitExpression är lika med newExpression. Typ.

Gäller för

ListInit(NewExpression, Expression[])

Skapar en ListInitExpression som använder en metod med namnet "Lägg till" för att lägga till element i en samling.

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

Parametrar

newExpression
NewExpression

A NewExpression för att ange egenskapen NewExpression lika med.

initializers
Expression[]

En matris med Expression objekt som ska användas för att fylla samlingen Initializers .

Returer

En ListInitExpression som har egenskapen NodeType lika med ListInit och egenskapen NewExpression inställd på det angivna värdet.

Undantag

newExpression eller initializers är null.

-eller-

Ett eller flera element i initializers är null.

newExpression. Typen implementerar IEnumerableinte .

Det finns ingen instansmetod med namnet "Lägg till" (skiftlägesokänslig) som deklareras i newExpression. Typ eller bastyp.

-eller-

Lägg till -metoden på newExpression. Typ eller dess bastyp tar inte exakt ett argument.

-eller-

Den typ som representeras av Type egenskapen för det första elementet initializers i kan inte tilldelas till argumenttypen för add-metoden på newExpression. Typ eller bastyp.

-eller-

Mer än en argumentkompatibel metod med namnet "Lägg till" (skiftlägesokänslig) finns på newExpression. Skriv och/eller dess bastyp.

Kommentarer

Egenskapen TypenewExpression för måste representera en typ som implementerar IEnumerable.

För att använda den här överlagringen av ListInit(NewExpression, Expression[]), newExpression. Typen eller dess bastyp måste deklarera en enskild metod med namnet "Lägg till" (skiftlägesokänslig) som tar exakt ett argument. Argumentets typ måste kunna tilldelas från den typ som representeras av Type egenskapen för det första elementet i initializers.

Egenskapen Initializers för den returnerade ListInitExpression innehåller ett element av typen ElementInit för varje element i initializers. Egenskapen Arguments för varje element Initializers i är en singleton-samling som innehåller motsvarande element i initializers. Egenskapen AddMethod för varje element Initializers i representerar den lägg till-metod som identifierades på newExpression. Typ eller bastyp.

Egenskapen Type för resultatet ListInitExpression är lika med newExpression. Typ.

Gäller för

ListInit(NewExpression, MethodInfo, IEnumerable<Expression>)

Skapar en ListInitExpression som använder en angiven metod för att lägga till element i en samling.

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

Parametrar

newExpression
NewExpression

A NewExpression för att ange egenskapen NewExpression lika med.

addMethod
MethodInfo

En MethodInfo som representerar en instansmetod med namnet "Lägg till" (skiftlägesokänslig) som lägger till ett element i en samling.

initializers
IEnumerable<Expression>

En IEnumerable<T> som innehåller Expression objekt som ska användas för att fylla samlingen Initializers .

Returer

En ListInitExpression som har egenskapen NodeType lika med ListInit och egenskapen NewExpression inställd på det angivna värdet.

Undantag

newExpression eller initializers är null.

-eller-

Ett eller flera element i initializers är null.

newExpression. Typen implementerar IEnumerableinte .

-eller-

addMethod är inte null och den representerar inte en instansmetod med namnet "Lägg till" (skiftlägesokänslig) som tar exakt ett argument.

-eller-

addMethod är inte null och den typ som representeras av Type egenskapen för ett eller flera element i initializers kan inte tilldelas till argumenttypen för den metod som addMethod representerar.

addMethod är null och ingen instansmetod med namnet "Lägg till" som tar ett typkompatibelt argument finns på newExpression. Typ eller bastyp.

Kommentarer

Egenskapen TypenewExpression för måste representera en typ som implementerar IEnumerable.

Om addMethod är null, newExpression. Typen eller dess bastyp måste deklarera en enskild metod med namnet "Lägg till" (skiftlägesokänslig) som tar exakt ett argument. Om addMethod inte nullmåste den representera en instansmetod med namnet "Lägg till" (skiftlägesokänslig) som har exakt en parameter. Den typ som representeras av Type egenskapen för varje element initializers i måste kunna tilldelas till argumenttypen för lägg till-metoden.

Egenskapen Initializers för den returnerade ListInitExpression innehåller ett element av typen ElementInit för varje element i initializers. Egenskapen Arguments för varje element Initializers i är en singleton-samling som innehåller motsvarande element i initializers. Egenskapen AddMethod för varje element Initializers i är lika med addMethod.

Egenskapen Type för resultatet ListInitExpression är lika med newExpression. Typ.

Gäller för

ListInit(NewExpression, MethodInfo, Expression[])

Skapar en ListInitExpression som använder en angiven metod för att lägga till element i en samling.

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

Parametrar

newExpression
NewExpression

A NewExpression för att ange egenskapen NewExpression lika med.

addMethod
MethodInfo

En MethodInfo som representerar en instansmetod som tar ett argument som lägger till ett element i en samling.

initializers
Expression[]

En matris med Expression objekt som ska användas för att fylla samlingen Initializers .

Returer

En ListInitExpression som har egenskapen NodeType lika med ListInit och egenskapen NewExpression inställd på det angivna värdet.

Undantag

newExpression eller initializers är null.

-eller-

Ett eller flera element i initializers är null.

newExpression. Typen implementerar IEnumerableinte .

-eller-

addMethod är inte null och den representerar inte en instansmetod med namnet "Lägg till" (skiftlägesokänslig) som tar exakt ett argument.

-eller-

addMethod är inte null och den typ som representeras av Type egenskapen för ett eller flera element i initializers kan inte tilldelas till argumenttypen för den metod som addMethod representerar.

addMethod är null och ingen instansmetod med namnet "Lägg till" som tar ett typkompatibelt argument finns på newExpression. Typ eller bastyp.

Kommentarer

Egenskapen TypenewExpression för måste representera en typ som implementerar IEnumerable.

Om addMethod är null, newExpression. Typen eller dess bastyp måste deklarera en enskild metod med namnet "Lägg till" (skiftlägesokänslig) som tar exakt ett argument. Om addMethod inte nullmåste den representera en instansmetod med namnet "Lägg till" (skiftlägesokänslig) som har exakt en parameter. Den typ som representeras av Type egenskapen för varje element initializers i måste kunna tilldelas till argumenttypen för lägg till-metoden.

Egenskapen Initializers för den returnerade ListInitExpression innehåller ett element av typen ElementInit för varje element i initializers. Egenskapen Arguments för varje element Initializers i är en singleton-samling som innehåller motsvarande element i initializers. Egenskapen AddMethod för varje element Initializers i är lika med addMethod.

Egenskapen Type för resultatet ListInitExpression är lika med newExpression. Typ.

Gäller för