Compartilhar via


Objeto e coleção inicializadores (guia de programação translation from VPE for Csharp)

O inicializador de objetos permite que você atribua valores a quaisquer campos ou propriedades de um objeto e estes podem ser acessados na hora de criação sem explicitamente chamar um construtor.O exemplo a seguir mostra como usar um inicializador de objeto com um tipo nomeado.Observe o uso de propriedades implementadas automaticamente no Test classe. Para obter mais informações, consulte Propriedades implementado automática (guia de programação translation from VPE for Csharp).

private class Cat
{
    // Auto-implemented properties
    public int Age { get; set; }
    public string Name { get; set; }
}

static void MethodA()
{
    // Object initializer
    Cat cat = new Cat { Age = 10, Name = "Sylvester" };
}

Inicializadores de objeto com tipos anônimo

Embora os inicializadores de objeto podem ser usados em qualquer contexto, eles são especialmente úteis em LINQ expressões de consulta. Expressões de consulta fazer uso freqüente de tipos anônimo, que só podem ser inicializados com um inicializador de objeto.No select cláusula, uma expressão de consulta pode transformar objetos da sequência original em objetos cujo valor e a forma podem ser diferente da original. Isso é muito útil se você deseja armazenar apenas uma parte das informações em cada objeto em uma sequência.O exemplo a seguir, suponha que um objeto de produto (p) contém vários campos e métodos, e que você estivesse interessado somente na criação de uma sequência de objetos que contêm o nome do produto e o preço unitário.

var productInfos =
    from p in products
    select new { p.ProductName, p.UnitPrice };

Quando essa consulta é executada, a productInfos variável irá conter uma sequência de objetos que podem ser acessados em um foreach demonstrativo, conforme mostrado neste exemplo:

foreach(var p in productInfos){...}

Cada objeto no novo tipo anônimo tem duas propriedades públicas que recebem sistema autônomo mesmos nomes de propriedades ou campos no objeto original.Você também pode renomear um campo quando você estiver criando um tipo anônimo; o exemplo a seguir renomeia o UnitPrice campo para Price.

select new {p.ProductName, Price = p.UnitPrice};

Inicializadores de objeto com tipos anuláveis

É um erro de time de compilar para usar um inicializador de coleção com uma struct anulável.

Inicializadores de coleção

Os inicializadores de coleção permitem que você especificar um ou mais intializers elemento ao inicializar uma classe de coleção que implemente IEnumerable. Os inicializadores de elemento podem ser um valor simples, uma expressão ou um inicializador de objeto.Por meio de um inicializador de coleta não é necessário especificar várias chamadas para o Add método da classe em seu código-fonte; o compilador adiciona as chamadas.

Os exemplos a seguir mostram dois inicializadores de coleção simples:

    List<int> digits = new List<int> { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 };
    List<int> digits2 = new List<int> { 0 + 1, 12 % 3, MakeInt() };

O inicializador de coleção seguinte usa os inicializadores de objeto para inicializar objetos do Cat classe definida no exemplo anterior. Observe que os inicializadores de objeto individual são colocados entre chaves e separados por vírgulas.

List<Cat> cats = new List<Cat>
{
    new Cat(){ Name="Sylvester", Age=8 },
    new Cat(){ Name="Whiskers", Age=2},
    new Cat() { Name="Sasha", Age=14}
};

Você pode especificar nulo sistema autônomo um elemento em um inicializador de coleção se Add método permite que ele.

List<Cat> moreCats = new List<Cat>
{
    new Cat(){ Name="Furrytail", Age=5 },
    new Cat(){ Name="Peaches", Age=4},
    null
};

Consulte também

Conceitos

Guia de Programação C#

Expressões de consulta do LINQ (guia de programação translation from VPE for Csharp)

Referência

Tipos anônimo (guia de programação translation from VPE for Csharp)