Crear una propiedad con solo un captador hace que su propiedad sea de solo lectura para cualquier código que esté fuera de la clase.
Sin embargo, puede cambiar el valor utilizando los métodos proporcionados por su clase:
public class FuelConsumption {
private double fuel;
public double Fuel
{
get { return this.fuel; }
}
public void FillFuelTank(double amount)
{
this.fuel += amount;
}
}
public static void Main()
{
FuelConsumption f = new FuelConsumption();
double a;
a = f.Fuel; // Will work
f.Fuel = a; // Does not compile
f.FillFuelTank(10); // Value is changed from the method's code
}
Establecer el campo privado de su clase como le readonlypermite establecer el valor del campo solo una vez (usando una asignación en línea o en el constructor de la clase). No podrá cambiarlo más tarde.
public class ReadOnlyFields {
private readonly double a = 2.0;
private readonly double b;
public ReadOnlyFields()
{
this.b = 4.0;
}
}
readonly Los campos de clase se utilizan a menudo para las variables que se inicializan durante la construcción de la clase y nunca se cambiarán más adelante.
En resumen, si necesita asegurarse de que el valor de su propiedad nunca se cambiará desde el exterior, pero necesita poder cambiarlo desde el código de su clase, use una propiedad "Get-only".
Si necesita almacenar un valor que nunca cambiará una vez que se haya establecido su valor inicial, use un readonlycampo.
public double FuelConsumption => Fuel;