La diferencia es que otros ensamblados compilados con código que leen la propiedad se compilan contra una propiedad.
Si más adelante decide que necesita agregar código al captador o al colocador, puede hacerlo sin tener que forzar a los demás ensamblados para recompilarlo.
No es así con los campos. Si más adelante cambia un campo para que sea una propiedad, para agregar ese código, otros ensamblajes vinculados con los suyos dejarán de funcionar correctamente, ya que están compilados para leer un campo, no una propiedad.
Además, se escribe mucho código para encontrar propiedades, no campos, como el enlace de datos y similares.
Nadie fuera de Microsoft utiliza el nombre en clave una vez que el producto va RTM. –
posible duplicado de [Diferencia entre propiedad y campo en C# 3.0+] (http://stackoverflow.com/questions/653536/difference-between-property-and-field-in-c-sharp-3-0) – nawfal
All las respuestas aquí me parecen indicar el hecho de que esto es un defecto en el diseño del lenguaje. Seguramente los problemas aquí podrían resolverse en el compilador o en el nivel de tiempo de ejecución. ¿Por qué tiene que romper la compatibilidad binaria y de origen? ¿Por qué nos vemos obligados a agregar un texto repetitivo que podría optimizarse? –