Devo usar propriedades públicas e campos privados ou campos públicos para dados?
Em grande parte do código que vi (no SO, thecodeproject.com e tenho a tendência de fazer isso no meu próprio código), vi propriedades públicas sendo criadas para cada campo particular que uma classe contém, mesmo que sejam as mais tipo básico deget; set;
gostar:
private int myInt;
public int MyInt
{
get { return myInt; }
set { myInt = value }
}
Minha pergunta é: como isso difere de:
public int MyInt;
e se deveríamos usar propriedades em vez de campos públicos, por que devemos usá-las neste caso específico? (Não estou falando de exemplos mais complexos em que os getters e setters realmente fazem algo especial ou há apenas um get ou set (somente leitura / gravação) em vez de apenas retornar / definir um valor de um campo privado). Ele não parece adicionar nenhum encapsulamento extra, apenas fornece um ícone interessante no IntelliSense e é colocado em uma seção especial em diagramas de classes!