Propriedades implementadas automaticamente
Declare propriedades com uma sintaxe automática concisa.
Propriedades implementadas automaticamente é 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 é uma propriedade
Uma propriedade se parece com um campo externamente, mas é apoiada por métodos acessadores (get e set). As propriedades permitem expor dados mantendo o controle sobre como eles são lidos e gravados.
using System;
class Program
{
public string Name { get; set; }
static void Main()
{
var p = new Program();
p.Name = "Coddy";
Console.WriteLine(p.Name);
}
}Sintaxe de implementação automática
Uma propriedade de implementação automática usa { get; set; }. O compilador gera um campo de suporte oculto para o senhor, portanto não é preciso escrevê-lo manualmente.
using System;
class Person
{
public string FirstName { get; set; }
public int Age { get; set; }
}
class Program
{
static void Main()
{
var person = new Person { FirstName = "Ada", Age = 36 };
Console.WriteLine(person.FirstName + " is " + person.Age);
}
}Por que usar propriedades em vez de campos
As propriedades públicas oferecem uma API estável. Mais tarde, o senhor pode adicionar validação ou alterar o armazenamento sem quebrar os chamadores. Os campos públicos não permitem isso.
using System;
class Account
{
public decimal Balance { get; set; }
}
class Program
{
static void Main()
{
var a = new Account();
a.Balance = 100.50m;
Console.WriteLine("Balance: " + a.Balance);
}
}Propriedades automáticas somente para leitura
Omita set para tornar uma propriedade somente para leitura. Ela só pode ser atribuída no construtor ou por meio de um inicializador, oferecendo valores imutáveis por padrão.
using System;
class Circle
{
public double Radius { get; }
public Circle(double radius)
{
Radius = radius;
}
}
class Program
{
static void Main()
{
var c = new Circle(5.0);
Console.WriteLine("Radius: " + c.Radius);
}
}Valores padrão de propriedades
O senhor pode atribuir um valor inicial a uma propriedade automática com = value;. Isso é executado quando o objeto é criado, antes de qualquer corpo de construtor.
using System;
class Settings
{
public bool DarkMode { get; set; } = true;
public int Volume { get; set; } = 50;
}
class Program
{
static void Main()
{
var s = new Settings();
Console.WriteLine("DarkMode: " + s.DarkMode + ", Volume: " + s.Volume);
}
}Acessadores de escrita privados
Um private set permite que a classe altere o valor internamente, impedindo que código externo o modifique. Esse é um padrão comum de encapsulamento.
using System;
class Counter
{
public int Count { get; private set; }
public void Increment()
{
Count++;
}
}
class Program
{
static void Main()
{
var counter = new Counter();
counter.Increment();
counter.Increment();
Console.WriteLine("Count: " + counter.Count);
}
}Acessadores de escrita somente na inicialização
O acessador init permite atribuição somente durante a inicialização do objeto (C# 9+). Depois da construção, o valor fica bloqueado.
using System;
class Product
{
public string Name { get; init; }
public decimal Price { get; init; }
}
class Program
{
static void Main()
{
var p = new Product { Name = "Book", Price = 12.99m };
Console.WriteLine(p.Name + ": " + p.Price);
}
}Propriedades em diferentes níveis de acesso
As propriedades seguem os modificadores de acesso normais. O senhor pode combinar níveis: um acessador de leitura público com um acessador de escrita privado ou uma propriedade totalmente interna.
using System;
class User
{
public string Id { get; private set; }
public User(string id)
{
Id = id;
}
}
class Program
{
static void Main()
{
var u = new User("u-001");
Console.WriteLine("User Id: " + u.Id);
}
}Propriedades automáticas com aparência de calculadas
As propriedades automáticas armazenam dados; elas não fazem cálculos. Se o senhor precisar de um valor calculado, deverá usar uma propriedade completa, que será abordada mais adiante. Por enquanto, trate as propriedades automáticas como um armazenamento simples.
using System;
class Rectangle
{
public double Width { get; set; }
public double Height { get; set; }
}
class Program
{
static void Main()
{
var r = new Rectangle { Width = 4, Height = 3 };
double area = r.Width * r.Height;
Console.WriteLine("Area: " + area);
}
}Atualizando propriedades automáticas
O senhor pode ler e reatribuir uma propriedade automática que permite escrita quantas vezes quiser, assim como faria com uma variável.
using System;
class Player
{
public int Score { get; set; }
}
class Program
{
static void Main()
{
var player = new Player();
player.Score = 10;
player.Score += 5;
player.Score *= 2;
Console.WriteLine("Score: " + player.Score);
}
}Reunindo tudo
Uma classe de modelo típica é composta principalmente por propriedades automáticas: algumas permitem escrita, outras permitem apenas inicialização e outras têm acessadores de escrita privados. Isso mantém a classe concisa e clara.
using System;
class BankAccount
{
public string Owner { get; init; }
public decimal Balance { get; private set; }
public void Deposit(decimal amount)
{
Balance += amount;
}
}
class Program
{
static void Main()
{
var acct = new BankAccount { Owner = "Lin" };
acct.Deposit(250m);
Console.WriteLine(acct.Owner + ": " + acct.Balance);
}
}Verificação rápida
Teste sua compreensão sobre propriedades de implementação automática.
Recapitulação
O senhor aprendeu que as propriedades de implementação automática usam { get; set; } com um campo de suporte gerado pelo compilador. As variações incluem { get; } somente para leitura, private set para alteração controlada e init para valores definidos uma única vez. Elas são a forma padrão de expor dados em uma classe.
using System;
class Demo
{
public string A { get; set; } = "settable";
public string B { get; } = "read-only";
public string C { get; init; } = "init-only";
}
class Program
{
static void Main()
{
var d = new Demo { C = "changed-at-init" };
Console.WriteLine(d.A + ", " + d.B + ", " + d.C);
}
}Perguntas Frequentes
A aula “Propriedades implementadas automaticamente” é grátis?
Sim — o texto completo de “Propriedades implementadas automaticamente” é 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 “Propriedades implementadas automaticamente”?
Declare propriedades com uma sintaxe automática concisa. 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 “Propriedades implementadas automaticamente”?
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
- Propriedades implementadas automaticamente
- Propriedades completas com campos de suporte
- Membros com corpo de expressão
- Indexadores