Создание свойства только с помощью геттера делает ваше свойство доступным только для чтения для любого кода, который находится за пределами класса.
Однако вы можете изменить значение, используя методы, предоставленные вашим классом:
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
}
Установка частного поля вашего класса как readonlyпозволяет вам установить значение поля только один раз (используя встроенное присваивание или в конструкторе класса). Вы не сможете изменить его позже.
public class ReadOnlyFields {
private readonly double a = 2.0;
private readonly double b;
public ReadOnlyFields()
{
this.b = 4.0;
}
}
readonly Поля класса часто используются для переменных, которые инициализируются во время построения класса и никогда не будут изменены позже.
Короче говоря, если вам нужно убедиться, что значение вашего свойства никогда не будет изменено извне, но вам нужно иметь возможность изменять его изнутри кода класса, используйте свойство «только для получения».
Если вам нужно сохранить значение, которое никогда не изменится после установки его начального значения, используйте readonlyполе.
public double FuelConsumption => Fuel;