Tipos personalizados
Além dos 16 tipos predefinidos nativos do C#, desenvolvedores podem criar seus próprios tipos definidos pelo usuário, divididos em seis grupos:
- Tipos de classe (class)
- Tipos de estrutura (struct)
- Tipos de vetor (array)
- Tipos de enumeração (enum)
- Tipos delegados (delegate)
- Tipos de interface
Para criar um tipo personalizado, usamos a declaração de tipo
- A categoria do tipo que você quer construir
- O nome do novo tipo criado
- A declaração de todos os membros do tipo (nome e definição). Vetores e delegados são exceções, não possuem membros nomeados
Após concluir a declaração, você consegue criar e manipular objetos desse tipo da mesma forma que os tipos predefinidos.
Tipos predefinidos (tipos embutidos) são prontos para uso, basta instanciar objetos diretamente. Já os tipos personalizados, como o próprio nome diz, exigem que você defina o modelo do tipo antes de criar objetos.
Exemplo: tipos básicos embutidos como int e float funcionam sem configuração prévia, basta escrever int age; float price;.
Para o tipo personalizado Person citado anteriormente, são necessários dois passos:
Passo um: Declaração (definir o modelo do tipo com class Person {})
Passo dois: Instanciação (criar um objeto com Person lucas = new Person();)
// Classe de carro
public class Car
{
// 1. Campos privados (armazenamento de dados internos)
private string _brand; // Marca do veículo
private string _color; // Cor do veículo
// 2. Propriedades públicas (ponto de acesso externo, aceita validação)
public string Brand
{
get { return _brand; }
set
{
// Validação básica: marca não pode ser vazia
if (!string.IsNullOrEmpty(value))
_brand = value;
else
Console.WriteLine("O nome da marca não pode estar vazio!");
}
}
public string Color
{
get { return _color; }
set { _color = value; }
}
// 3. Método de comportamento: dirigir
public void Drive()
{
Console.WriteLine($"Um veículo da marca【{Brand}】na cor【{Color}】está em trânsito!");
}
}Code language: JavaScript (javascript)
O trecho acima traz uma classe Car de automóvel com dois campos. Campos são variáveis com tipos nativos que guardam os dados reais. Também temos duas propriedades públicas Brand e Color, que são basicamente funções, assunto que veremos depois. Há ainda o membro de função public void Drive(){}.
Vamos explorar todos esses tipos personalizados com detalhes nos capítulos seguintes.

Tipos definidos pelo usuário