public Color color { get; private set; } означает, что изменить значение свойства может только метод из класса, содержащий это свойство. Внешние методы других классов могут только читать значение color, например метод Arena.Show использует цвет Circle для его отображения на площадке. Зачем это нужно, почему private set? Для того, чтобы пользователь Circle не имел возможности по ошибке, от усталости или просто от незнания сломать код, изменить цвет круга напрямую (так как это важное состояние объекта), а мог изменить только через способы, разрешенные разработчиком класса Circle, то есть через методы Голя(), НеГоля().
так вот чем отличается readonly от { get; private set; }
БОЛЬШОЕ СПАСИБО Ильшат!
Не совсем так, readonly это константа времени выполнения, я бы сказал, константа конкретного объекта, значение которой можно установить только в двух случаях - при объявлении, например class A {readonly int a = 6;} или в конструкторе класса
class A
{
readonly int a;
public A(int value)
{
a = value;
}
public void fail(int value)
{
a = value; // ошибка компиляции.
}
}
Таким образом, readonly позволяет установить для каждого объекта свою константу. Удобно. У нас есть константа, мы ее не можем случайно изменить, но мы можем варьировать ее значение в момент создания объекта. Например, у любого товара есть дата изготовления, которая в дальнейшем не может измениться. При создании объекта класса Товар мы задаем значение константы и в дальнейшем не имеем права его менять, это ведь логично?
Еще есть модификатор const - это константа времени компиляции. Более ограниченная штучка, подходит для примитивных типов. Перед компиляцией программы константа должна знать свое значение и оно не может меняться в течение программы. Например const double earth_gravity = 9.8; Менять фундаментальную гравитацию Земли невозможно, поэтому для нее нужно выбрать модификатор const.
Ильшат, спасибо за такое подробное объяснение, мне теперь понятно!
Алексей, рада что ты продвигаешься и набираешься знаний, уверена теперь тебе тоже слало еще больше понятней! :)
Ильшат! Спасибо огромное! Сохранил объяснения, что бы всегда были под рукой! Очень понятно и доступно. Полезно, все-таки проверять отчеты.
Иван, пожалуйста. Рад, что помог)
Оля, пожалуйста. Ты молодец, здорово прогрессируешь)