0Pricing
C# Academy · Aula

Construtores primários em classes

Declare parâmetros do construtor no cabeçalho do tipo.

Construtores primários em classes é uma aula grátis de C# Academy no CoddyKit. Esta é a aula 1 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 construtor primário

Um construtor primário permite declarar parâmetros do construtor diretamente no cabeçalho da classe, como class Point(int x, int y). Os parâmetros ficam no escopo durante todo o corpo da classe.

using System;

class Point(int x, int y) {
    public int X => x;
    public int Y => y;
}

var p = new Point(3, 4);
Console.WriteLine(p.X + "," + p.Y); // 3,4

Chega de código repetitivo

Antes dos construtores primários, era necessário escrever um corpo de construtor apenas para copiar os parâmetros para campos. Agora o cabeçalho declara os parâmetros, que podem ser referenciados diretamente.

using System;

class Greeter(string name) {
    public string Greet() => "Hello, " + name + "!";
}

Console.WriteLine(new Greeter("Ada").Greet()); // Hello, Ada!

Os parâmetros estão no escopo em todo lugar

Os parâmetros de um construtor primário podem ser usados em inicializadores de propriedades, corpos de métodos e inicializadores de campos em qualquer parte da classe.

using System;

class Circle(double radius) {
    public double Area => Math.PI * radius * radius;
    public double Circumference => 2 * Math.PI * radius;
}

var c = new Circle(2);
Console.WriteLine(Math.Round(c.Area, 2)); // 12.57

Inicializando campos e propriedades

É possível usar um parâmetro de construtor primário para inicializar um campo ou uma propriedade no momento da declaração.

using System;

class Account(decimal initial) {
    public decimal Balance { get; private set; } = initial;
    public void Deposit(decimal amount) => Balance += amount;
}

var a = new Account(100m);
a.Deposit(50m);
Console.WriteLine(a.Balance); // 150

Validação no cabeçalho

É possível validar parâmetros de um construtor primário diretamente, usando expressões throw ao atribuí-los a um campo.

using System;

class Person(string name) {
    public string Name { get; } =
        string.IsNullOrWhiteSpace(name)
            ? throw new ArgumentException("name required")
            : name;
}

Console.WriteLine(new Person("Lin").Name); // Lin

Adicionando construtores adicionais

Uma classe com um construtor primário ainda pode declarar construtores adicionais, mas eles devem encadear-se ao construtor primário com : this(...).

using System;

class Box(int width, int height) {
    public int Width => width;
    public int Height => height;
    public Box(int size) : this(size, size) { }
}

var sq = new Box(5);
Console.WriteLine(sq.Width + "x" + sq.Height); // 5x5

Corpos de construtores primários

Os construtores primários não têm um corpo próprio. A lógica que precisa ser executada durante a construção deve ficar em inicializadores de campos ou em um construtor comum encadeado.

using System;

class Logger(string prefix) {
    private readonly string tag = "[" + prefix + "]";
    public void Log(string msg) => Console.WriteLine(tag + " " + msg);
}

new Logger("INFO").Log("started"); // [INFO] started

Não são propriedades públicas automaticamente

Ao contrário dos registros, um construtor primário em uma classe comum não cria propriedades públicas. Os parâmetros são privados para a classe, a menos que você os exponha.

using System;

class Temp(double celsius) {
    // celsius is NOT a public property here
    public double Fahrenheit => celsius * 9 / 5 + 32;
}

Console.WriteLine(new Temp(100).Fahrenheit); // 212

Parâmetros capturados tornam-se campos

Quando um parâmetro de construtor primário é usado em um método, e não apenas em um inicializador, o compilador o captura em um campo oculto para que ele sobreviva à construção.

using System;

class Counter(int start) {
    private int value = start;
    public int Next() => value++;
}

var c = new Counter(10);
Console.WriteLine(c.Next()); // 10
Console.WriteLine(c.Next()); // 11

Injeção de dependências mais limpa

Os construtores primários são populares para DI: declare os serviços no cabeçalho e use-os nos métodos, sem atribuição manual a campos.

using System;

interface IClock { string Now(); }
class FakeClock : IClock { public string Now() => "12:00"; }

class Service(IClock clock) {
    public string Report() => "Time is " + clock.Now();
}

Console.WriteLine(new Service(new FakeClock()).Report()); // Time is 12:00

Combinando tudo

Esta classe usa um construtor primário para suas dependências e expõe uma propriedade calculada, sem um corpo de construtor explícito.

using System;

class Rectangle(double w, double h) {
    public double Area => w * h;
    public double Perimeter => 2 * (w + h);
}

var r = new Rectangle(3, 4);
Console.WriteLine(r.Area + " " + r.Perimeter); // 12 14

Verificação rápida

Teste sua compreensão dos construtores primários em classes.

Recapitulação

Você aprendeu sobre construtores primários em classes.

  • class C(int x) declara parâmetros do construtor no cabeçalho.
  • Os parâmetros ficam no escopo em todo o corpo da classe.
  • Os construtores adicionais são encadeados com : this(...).
  • Em uma classe comum, eles não são propriedades públicas automaticamente.

Perguntas Frequentes

A aula “Construtores primários em classes” é grátis?

Sim — o texto completo de “Construtores primários em classes” é 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 “Construtores primários em classes”?

Declare parâmetros do construtor no cabeçalho do tipo. 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 1 de 4.

Quanto tempo leva a aula “Construtores primários em classes”?

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. Construtores primários em classes
  2. Capturando parâmetros em membros
  3. Construtores primários com structs
  4. Combinando com propriedades e tipos base
← Voltar para C# Academy