Diferencias:
- El segundo formulario sólo compilará con un C# 3 compilador o temprano
- La segunda forma no deja ningún código (incluso en la misma clase) de acceso el campo directamente, ya que el campo real tiene un "nombre indecible"
La segunda versión es lo que se conoce como automáticamente i propiedad ampliada (o "propiedad automática" para abreviar). Se introdujeron en C# 3. Si solo está escribiendo código que se parece a la primera versión, es decir, no hay lógica involucrada, entonces las propiedades automáticas son geniales. Siempre puede agregar lógica más tarde convirtiéndola en la primera forma. Todo su código será compatible con ese cambio, en términos de compatibilidad binaria y fuente.
Tenga en cuenta que las propiedades automáticas No le permiten especificar los valores por defecto, y no hay tal cosa como una propiedad realmente sólo lectura automática (es decir, uno sin un captador). Lo más cerca que puede venir es un comprador público con un setter privado, p.
public string Name { get; private set; }
No es exactamente lo mismo, pero está lo suficientemente cerca en muchas situaciones.
Efectivamente, no, y esta pregunta se ha hecho muchas veces antes. – ChrisF
@ChrisF definitivamente es una tontería, pero no creo que el que obtuviste sea el duplicado correcto –
@Daniel - fue el primero que encontré, y como el sistema permite múltiples duplicados posibles, no es realmente un problema. – ChrisF