Pour les propriétés C#, je peux le faire:C# définition de propriété
public class Employee{
public string Name { get; private set; }
public Employee(string name){
Name = name;
}
}
ce qui signifie que la propriété Name peut être réglée dans la classe des employés & peut être lu publiquement.
Mais, si je veux restreindre le jeu à seulement dans les constructeurs de la classe des employés, je dois faire:
public class Employee{
public readonly string Name = String.Empty;
public Employee(string name){
Name = name;
}
}
Mais, dans ce cas, je devais changer la propriété à un champ .
Y at-il une raison quelconque cela est impossible/autorisé en C#:
public class Employee{
public string Name { get; private readonly set; }
public Employee(string name){
Name = name;
}
}
OMI cela nous permettra d'avoir des propriétés qui peuvent être définies que dans le constructeur & ne nous appartient pas de modifier les propriétés aux champs ...
Merci!
Je suppose que 'readonly set' n'a pas de sens, mais vous obtenez l'image :) – Sunny
Ce que vous cherchez est quelque chose de syntaxique qui combine auto-propriétés et l'immuabilité que vous donnerait readonly. Cela n'existe pas à partir de C# 4.0. Je vous soutiendrais si vous vouliez l'ouvrir pour améliorer les fonctionnalités d'une version future. –
Il devrait y avoir une variante "constructor set" sur les propriétés, d'autant plus que c'est un endroit où elles pourraient vraiment briller (simplification de l'initialisation avec une configuration spécifique) – ehdv