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,4Chega 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.57Inicializando 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); // 150Validaçã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); // LinAdicionando 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); // 5x5Corpos 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] startedNã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); // 212Parâ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()); // 11Injeçã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:00Combinando 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 14Verificaçã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
- Construtores primários em classes
- Capturando parâmetros em membros
- Construtores primários com structs
- Combinando com propriedades e tipos base