¿Debo usar propiedades públicas y campos privados o campos públicos para datos?

En gran parte del código que he visto (en SO, thecodeproject.com y tiendo a hacer esto en mi propio código), he visto que se crean propiedades públicas para cada campo privado que contiene una clase, incluso si son las más importantes. tipo básico deget; set; me gusta:

private int myInt;
public int MyInt 
{
     get { return myInt; }
     set { myInt = value }
}

Mi pregunta es: ¿en qué se diferencia esto de:

public int MyInt;

y si deberíamos usar propiedades en lugar de campos públicos, ¿por qué deberíamos usarlas en este caso específico? (No estoy hablando de ejemplos más complejos en los que los captadores y definidores realmente hacen algo especial o solo hay un conjunto o lectura (solo lectura / escritura) en lugar de simplemente devolver / establecer el valor de un campo privado). Parece que no agrega encapsulación adicional, solo da un bonito icono en IntelliSense y se coloca en una sección especial en los diagramas de clase.

Respuestas a la pregunta(13)

Su respuesta a la pregunta