Existe alguma diferença em:
public idade; public idade { get; set; }
Ou é a mesma coisa ?
Existe alguma diferença em:
public idade; public idade { get; set; }
Ou é a mesma coisa ?
Olá Djalma
Os códigos que você postou são diferentes.
No primeiro você está criando um atributo público na classe que pode ser acessado por qualquer programador de todo o projeto. No segundo caso, você está criando uma propriedade que pode ter o acesso controlado caso necessário.
public class Conta
{
public double saldo;
}
Nesse código eu criei um atributo público e por isso qualquer um pode executar o código abaixo:
Conta c = new Conta();
c.saldo = 10000;
c.saldo += 100000;
MessageBox.Show("saldo = " + c.saldo);
Quando deixamos qualquer um acessar as informações da classe estamos criando um problema futuro de manutenção por que estamos violando o encapsulamento da classe.
Mas se usamos propriedades, podemos restringir o seu acesso:
public class Conta
{
public double Saldo { get; private set; }
}
Com esse código apenas a conta pode modificar o saldo:
Conta c = new Conta();
// Essa linha não funciona pois apenas a conta
// pode modificar seu saldo
c.Saldo = 10000;
// Esse código também tenta modificar o saldo e
// por isso também não funciona
c.Saldo += 100000;
// Esse código funciona pois apenas o set é privado,
// portanto ainda podemos ler o seu valor.
Console.WriteLine("saldo = " + c.Saldo);
Para mais informações leia o capítulo sobre encapsulamento da apostila aberta do curso de C# e orientação a objetos da caelum: https://www.caelum.com.br/apostila-csharp-orientacao-objetos/encapsulamento-e-modificadores-de-acesso/
Essa maneira eu até que havia entendido. A minha dúvida era se as propriedades assumissem o valor default. int variavel {get; set;} não seria o mesmo que public int variavel;
Abs
Lembre-se que as propriedades são apenas uma forma de controlar o acesso aos atributos da classe, logo se ela não for inicializada a propriedade terá o mesmo valor padrão de um atributo.
Entendi mestre. Obrigado pela resposta e atenção!
Abs!