Dominando Propriedades em C#: Guia Completo
Propriedades são membros nomeados de classes, structs e interfaces. Variáveis/métodos membro são campos (fields). Propriedades estendem campos e usam mesma sintaxe de acesso. Usam acessadores (accessors) para ler, escrever ou manipular valores de campos privados.
Propriedades não nomeiam locais de armazenamento; têm acessadores que leem, escrevem ou computam valores.
Acessadores
Contêm instruções executáveis para obter (get) ou definir (set) a propriedade. Podem ter get, set, ou ambos.
// Propriedade Code (string)
public string Code
{
get { return code; }
set { code = value; }
}
// Propriedade Name (string)
public string Name
{
get { return name; }
set { name = value; }
}
// Propriedade Age (int)
public int Age
{
get { return age; }
set { age = value; }
}
Exemplo Completo
using System;
namespace tutorialspoint
{
class Student
{
private string code = "N.A";
private string name = "not known";
private int age = 0;
public string Code { get { return code; } set { code = value; } }
public string Name { get { return name; } set { name = value; } }
public int Age { get { return age; } set { age = value; } }
public override string ToString()
{
return "Code = " + Code + ", Name = " + Name + ", Age = " + Age;
}
}
class ExampleDemo
{
public static void Main()
{
Student s = new Student();
s.Code = "001";
s.Name = "Zara";
s.Age = 9;
Console.WriteLine("Student Info: {0}", s);
s.Age += 1;
Console.WriteLine("Student Info: {0}", s);
Console.ReadKey();
}
}
}
Saída:
Student Info: Code = 001, Name = Zara, Age = 9
Student Info: Code = 001, Name = Zara, Age = 10
Propriedades Abstratas
Classe abstrata pode ter propriedade abstrata, implementada na classe derivada.
Exemplo
public abstract class Person
{
public abstract string Name { get; set; }
public abstract int Age { get; set; }
}
class Student : Person
{
private string code = "N.A", name = "N.A";
private int age = 0;
public string Code { get { return code; } set { code = value; } }
public override string Name { get { return name; } set { name = value; } }
public override int Age { get { return age; } set { age = value; } }
public override string ToString()
{
return "Code = " + Code + ", Name = " + Name + ", Age = " + Age;
}
}
Uso idêntico ao exemplo anterior.
Propriedades Autoimplementadas (C# 3.0+)
Sintaxe simplificada quando não há lógica extra:
public string Name { get; set; }
public int Age { get; set; }
O compilador cria campo de backing automaticamente.
Linguagem C
- O Poder Antimicrobiano da Prata: Como o Metal Combate Bactérias, Fungos e Vírus
- Propriedades Aritméticas: Associativa, Comutativa e Distributiva Explicadas
- Regras de Expoentes: Propriedades-Chave para Manipulação Algébrica
- Molibdênio-Hafnio-Carbono (MHC): Liga Reforçada por Partículas para Alta Temperatura
- AMPCO® 25 Forjados: Liga de Alto Desempenho para Materiais de Matrizes Superiores
- UGICHROM® 4462: Revestimento de Crômio Microfissurado de Alto Desempenho para Sistemas Hidráulicos e Pneumáticos
- UGICHROM® 4362 – Aço Inoxidável Cromado Microfissurado Premium para Aplicações Hidráulicas e Pneumáticas
- Bainidur® 1300 – Liga de Forjamento de Alta Resistência e Baixo Risco de Trinca
- Bainidur® 7980 CN: Aço Baixa Liga Premium para Cementação e Carbonitretação Superiores
- UGICHROM® 4460: Aço Inoxidável Cromado Ultra-Durável para Aplicações Hidráulicas e Pneumáticas