0Pricing
C# Academy · Aula

Inicializadores de objetos e coleções

Defina propriedades de forma concisa no momento da criação.

Inicializadores de objetos e coleções é uma aula grátis de C# Academy no CoddyKit. Esta é a aula 3 de 4. Você pode ler a aula completa abaixo gratuitamente — depois pratica ao vivo no navegador com um editor de código integrado e um tutor de IA 24/7. Faz parte do caminho de aprendizado de C# Academy, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de C# Academy inclui 4 aulas no total.

O que é um inicializador de objeto?

Um inicializador de objeto define propriedades ou campos públicos logo depois de new, dentro de { }, sem exigir um construtor para cada combinação.

using System;

class Person
{
    public string Name { get; set; }
    public int Age { get; set; }
}

class Program
{
    static void Main()
    {
        var p = new Person { Name = "Ada", Age = 36 };
        Console.WriteLine(p.Name + ", " + p.Age);
    }
}

Sintaxe do inicializador

Liste as atribuições de propriedades, separadas por vírgulas, dentro das chaves. Elas são executadas depois que o construtor termina.

using System;

class Car
{
    public string Make { get; set; }
    public string Model { get; set; }
    public int Year { get; set; }
}

class Program
{
    static void Main()
    {
        var car = new Car
        {
            Make = "Toyota",
            Model = "Corolla",
            Year = 2022
        };
        Console.WriteLine(car.Year + " " + car.Make + " " + car.Model);
    }
}

Combinando construtor e inicializador

Você pode chamar um construtor AND usar um inicializador. O construtor é executado primeiro; depois, o inicializador atribui as propriedades listadas.

using System;

class Widget
{
    public string Id { get; }
    public string Label { get; set; }

    public Widget(string id) { Id = id; }
}

class Program
{
    static void Main()
    {
        var w = new Widget("w1") { Label = "Submit" };
        Console.WriteLine(w.Id + ": " + w.Label);
    }
}

Inicializando apenas algumas propriedades

Liste apenas as propriedades que lhe interessam; as demais mantêm seus valores padrão. Isso torna os inicializadores flexíveis.

using System;

class Settings
{
    public bool DarkMode { get; set; } = false;
    public int Volume { get; set; } = 50;
    public string Lang { get; set; } = "en";
}

class Program
{
    static void Main()
    {
        var s = new Settings { DarkMode = true };
        Console.WriteLine(s.DarkMode + ", " + s.Volume + ", " + s.Lang);
    }
}

Inicializadores de coleções

Um inicializador de coleção preenche uma lista, um conjunto ou uma matriz no momento da criação, usando { } com elementos separados por vírgulas.

using System;
using System.Collections.Generic;

class Program
{
    static void Main()
    {
        var nums = new List<int> { 1, 2, 3, 4, 5 };
        Console.WriteLine("Count: " + nums.Count);
        Console.WriteLine("Sum: " + Sum(nums));
    }

    static int Sum(List<int> list)
    {
        int t = 0;
        foreach (var n in list) t += n;
        return t;
    }
}

Como funcionam os inicializadores de coleções

O compilador transforma cada elemento em uma chamada Add(...). Qualquer tipo que tenha um método Add e IEnumerable aceita essa sintaxe.

using System;
using System.Collections.Generic;

class Program
{
    static void Main()
    {
        var names = new List<string> { "Ann", "Bob", "Cara" };
        foreach (var n in names)
            Console.WriteLine(n);
    }
}

Inicializadores de dicionários

Dicionários podem ser inicializados com pares de chave e valor entre chaves, o que é muito útil para tabelas de consulta.

using System;
using System.Collections.Generic;

class Program
{
    static void Main()
    {
        var ages = new Dictionary<string, int>
        {
            ["Ann"] = 30,
            ["Bob"] = 25
        };
        Console.WriteLine("Ann is " + ages["Ann"]);
    }
}

Inicializadores de objetos aninhados

Um inicializador de objeto pode inicializar objetos aninhados, construindo um pequeno grafo de objetos em uma única expressão.

using System;

class Address
{
    public string City { get; set; }
}

class Customer
{
    public string Name { get; set; }
    public Address Home { get; set; } = new Address();
}

class Program
{
    static void Main()
    {
        var c = new Customer
        {
            Name = "Lin",
            Home = new Address { City = "Tokyo" }
        };
        Console.WriteLine(c.Name + " in " + c.Home.City);
    }
}

Coleções de objetos

Combine os dois recursos: inicialize uma lista cujos elementos também sejam criados com inicializadores de objetos.

using System;
using System.Collections.Generic;

class Item
{
    public string Name { get; set; }
    public decimal Price { get; set; }
}

class Program
{
    static void Main()
    {
        var cart = new List<Item>
        {
            new Item { Name = "Pen", Price = 1.5m },
            new Item { Name = "Book", Price = 9.0m }
        };
        decimal total = 0;
        foreach (var i in cart) total += i.Price;
        Console.WriteLine("Total: " + total);
    }
}

Inicializadores e propriedades init

Os inicializadores de objetos são a forma de definir propriedades que aceitam apenas init, pois elas só podem ser atribuídas durante a inicialização.

using System;

class Config
{
    public string Env { get; init; }
    public int Retries { get; init; }
}

class Program
{
    static void Main()
    {
        var c = new Config { Env = "prod", Retries = 3 };
        Console.WriteLine(c.Env + " / " + c.Retries);
    }
}

Reunindo tudo

Os inicializadores tornam a construção declarativa e legível, especialmente para objetos de configuração e dados de teste.

using System;
using System.Collections.Generic;

class Team
{
    public string Name { get; set; }
    public List<string> Members { get; set; } = new List<string>();
}

class Program
{
    static void Main()
    {
        var t = new Team
        {
            Name = "Alpha",
            Members = { "Ann", "Bob", "Cara" }
        };
        Console.WriteLine(t.Name + " has " + t.Members.Count + " members");
    }
}

Verificação rápida

Teste sua compreensão sobre inicializadores.

Recapitulação

Inicializadores de objetos definem membros públicos em { } depois de new, sendo executados depois do construtor. Inicializadores de coleções adicionam elementos por meio de chamadas implícitas a Add, e os dicionários aceitam pares de chave e valor. Ambos podem ser aninhados, funcionar com propriedades init e tornar a construção concisa e declarativa.

using System;
using System.Collections.Generic;

class Demo
{
    public string Name { get; set; }
    public List<int> Nums { get; set; } = new List<int>();
}

class Program
{
    static void Main()
    {
        var d = new Demo { Name = "x", Nums = { 1, 2, 3 } };
        Console.WriteLine(d.Name + " " + d.Nums.Count);
    }
}

Perguntas Frequentes

A aula “Inicializadores de objetos e coleções” é grátis?

Sim — o texto completo de “Inicializadores de objetos e coleções” é grátis para ler aqui na web. Para praticá-la interativamente (um editor de código integrado e um tutor de IA 24/7) e desbloquear o restante do curso de C# Academy, atualize para CoddyKit PRO. O curso de C# Academy inclui 4 aulas no total.

O que vou aprender em “Inicializadores de objetos e coleções”?

Defina propriedades de forma concisa no momento da criação. Você pratica C# Academy com código prático que executa diretamente no navegador, e um tutor de IA 24/7 responde suas dúvidas enquanto trabalha na aula.

Preciso ter experiência prévia para começar C# Academy?

Nenhuma experiência prévia é necessária. C# Academy no CoddyKit é estruturado para alunos iniciantes até avançados, então você pode começar aqui ou desde o início e aprender no seu ritmo. Esta é a aula 3 de 4.

Quanto tempo leva a aula “Inicializadores de objetos e coleções”?

A maioria das aulas CoddyKit leva cerca de 5–10 minutos. Cada uma é compacta e interativa, então você faz progresso constante e retoma exatamente de onde parou entre web e app.

Posso escrever e executar código nesta aula de C# Academy?

Sim. Cada aula de C# Academy inclui um editor de código integrado, então você escreve e executa código real direto no navegador e recebe feedback de IA instantaneamente — nenhuma configuração local necessária.

Todas as aulas deste curso

  1. Definindo construtores
  2. Encadeamento de construtores com this
  3. Inicializadores de objetos e coleções
  4. Construtores estáticos
← Voltar para C# Academy