Getters e setters
Getters e setters em C# são métodos especiais usados para controlar o acesso a variáveis privadas de uma classe, promovendo o encapsulamento dos dados. Em C#, eles são implementados por meio de propriedades, que combinam aspetos de variáveis e métodos: para quem utiliza a classe, uma propriedade se comporta como um campo comum, mas internamente ela executa código ao ser lida (getter) ou modificada (setter).
- O getter (acessador
get
) é chamado quando a propriedade é lida e retorna o valor do campo privado associado. - O setter (acessador
set
) é chamado quando a propriedade recebe um valor, permitindo validar ou modificar o dado antes de armazená-lo.
Exemplo:
private string nome; // campo privado
public string Nome // propriedade pública
{
get { return nome; } // getter
set { nome = value; } // setter
}
Assim, getters e setters permitem proteger os dados internos da classe e controlar como eles são acedidos e alterados, podendo incluir validações ou lógica adicional no processo.
Definir getters e setters
Para definir getters e setters em classes em C#, utiliza-se o conceito de propriedades. Propriedades são membros especiais que encapsulam o acesso a campos privados, permitindo controlar como os dados são lidos e modificados de fora da classe, promovendo o encapsulamento.
Exemplo Básico
public class Pessoa
{
private string nome; // campo privado
public string Nome // propriedade pública
{
get { return nome; } // getter: retorna o valor do campo
set { nome = value; } // setter: atribui um valor ao campo
}
}
- O método
get
retorna o valor do campo privado. - O método
set
atribui um valor ao campo, usando a palavra-chavevalue
.
Utilizando a Propriedade
Pessoa p = new Pessoa();
p.Nome = "Maria"; // Chama o setter
Console.WriteLine(p.Nome); // Chama o getter
Propriedades Automáticas
Se não for necessário lógica adicional no getter ou setter, pode-se usar propriedades automáticas:
public class Produto
{
public string Nome { get; set; } // campo implícito, getter e setter automáticos
}
Somente Leitura ou Escrita
- Somente leitura: defina apenas o
get
: csharppublic string Nome { get; }
- Somente escrita: defina apenas o
set
: csharppublic string Nome { set { ... } }
Resumo
- Declare o campo como
private
. - Crie uma propriedade pública com os métodos
get
e/ouset
. - Use a propriedade para aceder e modificar o valor do campo de forma controlada.
Essa abordagem melhora a segurança e a manutenção do código, permitindo adicionar validações e lógica personalizada no acesso aos dados.