Створення властивості лише за допомогою getter робить ваш ресурс доступним лише для читання для будь-якого коду, який знаходиться поза класом.
Однак ви можете змінити значення, використовуючи методи, надані вашим класом:
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;