Cette question s'est posée dans les commentaires de cette réponse. L'incapacité d'avoir des propriétés en lecture seule a été proposé comme une des raisons possibles de l'utilisation de champs plutôt que des propriétés.
Par exemple:
class Rectangle
{
private readonly int _width;
private readonly int _height;
public Rectangle(int width, int height)
{
_width = width;
_height = height;
}
public int Width { get { return _width; } }
public int Height { get { return _height; } }
}
Mais pourquoi tu ne peux pas faire cela?
public int Width { get; readonly set; }
Edit (interprétation): Vous pouvez obtenir cette fonctionnalité dans le premier exemple. Mais pourquoi ne pouvez-vous pas utiliser la fonction d'auto-mise en œuvre de la propriété d'abréviation pour faire la même chose? Il serait également plus propre, car vous n'auriez pas à accéder directement aux champs dans votre constructeur; tous les accès serait par le biais de la propriété.