код, который вы пишете:
public const Size ImageSize = new Size() { Width = 28, Height = 28 };
На самом деле компилируется так же, как это:
public const Size ImageSize = new Size();
ImageSize.Width = 28;
ImageSize.Height = 28;
Версия, которую вы используете, называемая инициализатором объекта, является всего лишь синтаксическим сокращением для последней версии выше. Два логически идентичны. В последней версии вы можете увидеть, почему она выдает ошибку, вы не можете установить свойства для const
после того, как оно было объявлено.
Более того, я не уверен, что вы можете использовать такой тип ссылки как const
. Я не уверен в этом, так как не могу сказать, что когда-либо пробовал. Вместо этого вы можете попробовать readonly
. Хотя вы можете столкнуться с той же или похожей проблемой.
Имеет ли Size
конструктор, который можно вызывать с параметрами вместо использования инициализатора объекта?