Setters privados de C#
Las propiedades en C#
son una combinación de campos y métodos. No son variables, por lo que no se pueden pasar como parámetros out
o ref
en las funciones.
Ayudan a controlar el acceso a los datos, realizan la validación de los datos antes de editarlos y promueven un código más limpio, ya que evita la declaración de variables privadas explícitas con la ayuda de getters
y setters
.
Antes de profundizar en el uso de los private setters
, vamos a discutir primero los conceptos de getters
y setters
y poco a poco pasar a los roles de los access modifiers
.
Use los getters
como Get Accessor en C#
El código de getters
se ejecuta al leer el valor. Como se trata de una operación de lectura sobre un campo, un getter
siempre debe devolver el resultado.
Un captador public
significa que todos pueden leer la propiedad. Mientras que el getter privado
implica que la propiedad solo puede leerse por clase y, por lo tanto, es una propiedad de solo escritura.
Tenemos que elegir entre getters
según nuestros requisitos.
Utilizar el setters
como un accesorio de conjunto en C#
El código para setters
se ejecuta al escribir el valor.
Es una operación de escritura y, por lo tanto, es un método nulo. Toma como argumento el valor del campo.
El valor se puede asignar a la propiedad en su forma actual, o podemos realizar algunos cálculos antes de asignarlo.
El public setter
significa que el valor es editable por cualquier objeto presente fuera de la clase. Por otro lado, el private setter
significa que la propiedad es de solo lectura y no puede ser modificada por otros.
Ahora que conocemos la diferencia entre getter
, setter
, y el impacto de los accessor modifiers
, podemos mirar específicamente a los private setters
.
public int Prop { get; private set; }
// The below code is the same as above, see the cleanliness use of auto property brings.
private int prop;
public int Prop {
get { return prop; }
}
Podemos ver en el código anterior que el uso de private setters
no es solo una buena práctica de codificación, sino que hace que nuestro código esté inherentemente encapsulado.
La Encapsulación
significa que los objetos de nuestra clase se adhieren a una interfaz y siempre mantienen su estado. Aquí, negar que la propiedad sea editable desde el exterior hace que las clases sean más sólidas y eficaces.
Harshit Jindal has done his Bachelors in Computer Science Engineering(2021) from DTU. He has always been a problem solver and now turned that into his profession. Currently working at M365 Cloud Security team(Torus) on Cloud Security Services and Datacenter Buildout Automation.
LinkedIn