Qual é a diferença entre campos, atributos e propriedades?
Qual é a diferença entre campos, atributos e propriedades?
Oi, Abel, bom dia.
A diferença é conceitual.
Estou usando o Guia de Programação C# da Microsoft como referência, ok?
Vamos aos conceitos:
um campo é uma variável declarada diretamente dentro de uma classe ou estrutura. Em geral campos são declarados com visibilidade privada ou protegida. Mais detalhes aqui. Mas se em geral ficam escondidos do mundo exterior, como acessá-los?
através de uma propriedade, que é um membro de uma classe ou estrutura com métodos específicos para acessar o campo que está escondido. Propriedades permitem à uma classe expôr uma maneira de definir seus valores enquanto esconde sua implementação. Mais detalhes aqui.
atributos no C# têm um significado diferente do mundo Java e OO em geral. Em OO atributos representam os dados que uma classe possui. No C# esse conceito é justamente definido pelas propriedades. No mundo C# um atributo é uma maneira de adicionar informação a um tipo ou membro de tipo. Podemos dizer que são metadados sobre o código. Veja mais informações aqui.
Vamos ao código:
public class Produto
{
[Obsolete]
public string NomeDoProduto { get; set; }
public string Nome { get; set; }
private double _valorUnitario;
public double ValorUnitario
{
get
{
return _valorUnitario;
}
set
{
if (value > 0)
{
_valorUnitario = value;
}
}
}
public Produto(string nome, double valor)
{
Nome = nome;
ValorUnitario = valor;
}
}
Se você leu as referências que te passei, já consegue distinguir no código acima o que é um campo, uma propriedade e um atributo.
Coloca aqui sua resposta, topa?
Opa, Abel, bom dia. Sua dúvida foi solucionada? Podemos fechar o tópico?
Abel, boa tarde. Estou fechando esse tópico, ok? Qualquer nova dúvida não deixa de postar aqui no fórum.
Abraços!