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!

questionAnswers(13)

yourAnswerToTheQuestion