Opa, João. Beleza?
Não sou expert em C# mas vou tentar te dar uma luz
1 - Suas classes em C# são, por padrão, internal
. Isso quer dizer que elas vão estar disponíveis para todas as outras classes do mesmo Assembly. Basicamente, todas as classes do mesmo projeto, caso esteja todo em um único Assembly. Normalmente este comportamento padrão é o suficiente, embora eu tenha aprendido nos cursos a utilizar o public
"pra garantir".
2- A vantagem de utilizar uma property
ao invés de um atributo público, é que se você, futuramente precisar adicionar alguma regra de negócio, seu código não vai quebrar. Você só vai precisar alterar em um lugar, entende? Ex.:
Antes:
public string Nome { get; set; }
Depois, tendo sido criada uma regra de negócio:
private string _nome;
public string Nome {
get { return _nome.ToUpper(); }
set { _nome = value; }
}
O código que utilizar a classe em questão, não vai precisar mudar nada em seu código, e o nome já virá em letras maiúsculas, conforme a nova regra dita.