La création d'une propriété avec seulement un getter rend votre propriété en lecture seule pour tout le code qui est en dehors de la classe.
Vous pouvez toutefois modifier la valeur à l'aide de méthodes fournies par votre classe :
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
}
Réglage du domaine privé de votre classe comme readonly
vous permet de définir le champ de valeur qu'une seule fois (à l'aide d'une ligne d'affectation ou dans le constructeur de la classe).
Vous ne serez pas en mesure de le changer plus tard.
public class ReadOnlyFields {
private readonly double a = 2.0;
private readonly double b;
public ReadOnlyFields()
{
this.b = 4.0;
}
}
readonly
des champs de classe sont souvent utilisés pour les variables sont initialisées au cours de la classe de contruction, et ne sera jamais modifié par la suite.
En bref, si vous avez besoin de s'assurer de la valeur de votre propriété ne sera jamais changé de l'extérieur, mais vous devez être en mesure de le modifier à partir de votre code de classe, l'utilisation d'une seule propriété.
Si vous avez besoin de stocker une valeur qui ne changera jamais, une fois sa valeur initiale a été défini, utilisez un readonly
champ.