Yalnızca alıcıyla bir mülk oluşturmak, mülkünüzü sınıfın dışındaki herhangi bir kod için salt okunur hale getirir.
Bununla birlikte, sınıfınız tarafından sağlanan yöntemleri kullanarak değeri değiştirebilirsiniz:
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
}
Sınıfınızın özel alanını olarak readonlyayarlamak, alan değerini yalnızca bir kez ayarlamanıza izin verir (bir satır içi atama kullanarak veya sınıf yapıcısında). Daha sonra değiştiremeyeceksiniz.
public class ReadOnlyFields {
private readonly double a = 2.0;
private readonly double b;
public ReadOnlyFields()
{
this.b = 4.0;
}
}
readonly sınıf alanları genellikle sınıf oluşturma sırasında başlatılan değişkenler için kullanılır ve daha sonra asla değiştirilmeyecektir.
Kısacası, mülk değerinizin asla dışarıdan değiştirilmeyeceğinden emin olmanız gerekiyorsa, ancak bunu sınıf kodunuzun içinden değiştirebilmeniz gerekiyorsa, bir "Get-only" özelliği kullanın.
Başlangıç değeri ayarlandıktan sonra asla değişmeyecek bir değer kaydetmeniz gerekiyorsa, bir readonlyalan kullanın .
public double FuelConsumption => Fuel;