Создание объекта класса приведет к тому, что все поля экземпляра появятся прежде, чем что-либо - даже конструктор класса - сможет получить к нему доступ, а выделение массива приведет к существованию всех его элементов, прежде чем что-либо сможет получить доступ к массиву , Оба этих действия приведут к обнулению всей памяти, выделенной этим полям или элементам , без учета типов данных, которые будут храниться в них .
Когда место хранения типа класса появляется, оно первоначально будет содержать нулевую ссылку. Когда место хранения структурного типа появляется, все его поля (и любые поля структур внутри него) делают это одновременно. В отличие от экземпляров объектов класса, которые могут появиться только при использовании конструктора, места хранения структурного типа создаются без использования какого-либо собственного кода структуры. Следовательно, определение структуры не будет иметь права голоса в отношении того, что должно произойти, когда «экземпляры» [т.е. складские помещения типа структуры].
Структура, по сути, представляет собой набор полей, связанных вместе клейкой лентой. Если структура должна вести себя как-то иначе, она обычно должна делать свои поля приватными и притворяться неизменными [даже если присваивание структуры на самом деле изменяет структуру назначения, перезаписывая все ее поля соответствующими значениями из источника, и определение структуры не имеет права голоса в этом вопросе. Однако если предполагается, что структура инкапсулирует фиксированный набор связанных, но независимых значений (например, координат точки), , которые могут независимо вместить любую комбинацию значений, которые допустимы для их соответствующих типов , a Структура должна просто обнародовать свои поля. Некоторые люди могут скулить о том, что «изменчивые структуры - это зло», но зло применимо только при вызове методов самопутывания в структуре. Структуры, которые выставляют свое состояние как поля, ведут себя как наборы переменных, склеенных клейкой лентой. Если вам нужен набор переменных, склеенных клейкой лентой, попытка сделать структуру, притворяющейся неизменной, просто усложнит программирование.