C# getters, declaración de setters

C# getters, declaración de setters

Diferencias:

  • El segundo formulario solo compilará con un compilador C# 3 o posterior
  • La segunda forma no permite que ningún código (incluso en la misma clase) acceda al campo directamente, ya que el campo real tiene un "nombre indescriptible"

La segunda versión es lo que se conoce como una propiedad implementada automáticamente (o "propiedad automática" para abreviar). Se introdujeron en C# 3. Si solo está escribiendo un código que se parece a la primera versión, es decir, no hay lógica involucrada, entonces las propiedades automáticas son excelentes. Siempre puede agregar lógica más adelante convirtiéndolo en la primera forma. Todo su código será compatible con ese cambio, tanto en términos de compatibilidad fuente como binaria.

Tenga en cuenta que en versiones anteriores a C# 6, las propiedades automáticas no le permite especificar valores predeterminados, y no existe una propiedad automática genuinamente de solo lectura (es decir, una sin captador). Lo más cerca que puede llegar es un getter público con un setter privado, por ejemplo,

public string Name { get; private set; }

No es exactamente lo mismo, pero está lo suficientemente cerca en muchas situaciones.


La primera es una propiedad estándar. Debe definir un campo para almacenar el valor. El segundo es una propiedad implementada automáticamente, solo disponible en C# 3.0 y versiones posteriores.