Wenn Sie eine Eigenschaft nur mit einem Getter erstellen, ist Ihre Eigenschaft für jeden Code außerhalb der Klasse schreibgeschützt.
Sie können den Wert jedoch mithilfe der von Ihrer Klasse bereitgestellten Methoden ändern:
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
}
Wenn Sie das private Feld Ihrer Klasse so readonlyeinstellen, dass Sie den Feldwert nur einmal festlegen können (mithilfe einer Inline-Zuweisung oder im Klassenkonstruktor). Sie können es später nicht mehr ändern.
public class ReadOnlyFields {
private readonly double a = 2.0;
private readonly double b;
public ReadOnlyFields()
{
this.b = 4.0;
}
}
readonly Klassenfelder werden häufig für Variablen verwendet, die während der Klassenerstellung initialisiert werden und später nie mehr geändert werden.
Kurz gesagt, wenn Sie sicherstellen möchten, dass Ihr Eigenschaftswert niemals von außen geändert wird , Sie ihn jedoch innerhalb Ihres Klassencodes ändern können müssen, verwenden Sie eine "Get-only" -Eigenschaft.
Wenn Sie einen Wert speichern müssen, der sich nach dem Festlegen des Anfangswertes nie mehr ändert, verwenden Sie ein readonlyFeld.
public double FuelConsumption => Fuel;