Não entendi direito usar as propriedades Get e Set com o atributo definido como Public faz diferença ?
Caso não faça, então porque usar Private ?
Você está vendo a versão anterior da nova experiência da Alura que estamos preparando para você. Em breve, ela ganha uma identidade visual novinha totalmente pensada em potencializar seus estudos!
Não entendi direito usar as propriedades Get e Set com o atributo definido como Public faz diferença ?
Caso não faça, então porque usar Private ?
Vamos imaginar uma classe com uma propriedade:
public class Exemplo
{
public int PropriedadeExemplo { get; set;}
}
Neste exemplo a propriedade "PropriedadeExemplo" foi declarada como publica e pode ser acessada por outras classes no nosso sistema e, como os métodos "get" e "set" não tem nenhuma declaração, fica implícito que eles também são públicos, ou seja, as outras classes do seu sistema podem recuperar a informação e alterar a informação desta propriedade.
Quando você define os metodos get ou set da propriedade como privados, você esta dizendo que apenas a própria classe pode alterar ou recuperar a informação da propriedade, ou seja, as outras classes terão acesso a propriedade mas não poderão alterar ou recuperar a informação.
Exemplo:
Outras classes podem recuperar a informação que esta na propriedade mas NÃO podem alterar:
public class Exemplo
{
public int PropriedadeExemplo { get; private set;}
}
Outras classes NÃO podem recuperar a informação que esta na propriedade mas podem alterar:
public class Exemplo
{
public int PropriedadeExemplo { private get; set;}
}
Para finalizar os níveis de acesso que você pode dar para uma classe, método ou propriedade são:
public: o acesso não é restrito.
protected: o acesso é limitado à classe que os contém ou aos tipos derivados da classe que os contém.
Internal: o acesso é limitado ao assembly atual.
protegido interno: o acesso é limitado ao assembly atual ou aos tipos derivados da classe que os contém.
private: o acesso é limitado ao tipo recipiente.
Mais Informações:
https://docs.microsoft.com/pt-br/dotnet/csharp/language-reference/keywords/access-modifiers