Этот вопрос возник в комментариях этого ответа. Невозможность иметь свойства readonly была предложена в качестве потенциальной причины использовать поля вместо свойств.
Например:
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; } }
}
Но почему вы не можете просто сделать это?
public int Width { get; readonly set; }
Изменить (пояснение). Вы можете выполнить эту функцию в первом примере. Но почему вы не можете использовать автоматически реализованное сокращение свойств, чтобы сделать то же самое? Это также было бы менее беспорядочно, поскольку вам не приходилось напрямую обращаться к полям в вашем конструкторе; весь доступ будет через собственность.