僅使用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
類字段通常用於那些一流的施工過程中初始化的變量,並且永遠不會在以後更改。
總之,如果您需要確保您的財產價值永遠不會從外部改變,但您需要能夠從您的班級代碼內部更改它,使用「Get-only」屬性。
如果您需要存儲一個設置了初始值後永遠不會更改的值,請使用readonly
字段。
對於C#> 5代碼示例中get屬性可以簡化爲'public double FuelConsumption => Fuel;' – meJustAndrew 2017-01-03 13:16:48