Документация

Выбираем между классом и структурой

Вы можете использовать как классы так и структуры для объявления ваших пользовательских типов данных для использования их в качестве строительных блоков вашего программного кода.

Однако экземпляр структуры всегда передается по значению, а вот экземпляр класса — по ссылке. Это значит, что они подходят под разные задачи. В зависимости от того, какие структуры данных вы рассматриваете и какую функциональность вы преследуете, вам следует решить использовать класс или структуру.

Следуя основной линии, рассмотрим некоторые условия, при которых нам следует создавать структуру:

  • Основная цель структуры — инкапсуляция нескольких сравнительно простых значений данных.
  • Очень логично предположить, что инкапсулированные значения будут скорее копированы, чем переданы по ссылке, когда вы назначаете или передаете экземпляр структуры.
  • Любые свойства, хранящиеся в структуре, сами по себе типы значений, которые тоже будут скопированы, а не переданы по ссылке.
  • Структуры не нуждаются в наследовании свойств или поведения от других существующих типов.

Примеры хороших кандидатов структур:

  • Размер геометрической фигуры, возможно инкапсулирует width, height свойства, оба свойства типа Double.
  • Способ обратиться к диапазону внутри серии, возможно инкапсулирование свойства start и свойства length, оба свойства типа Int.
  • Точка в 3D координатной системе, возможно инкапсулирование свойств x,y и z, тип всех свойств Double.

Во всех остальных случаях объявляйте класс, создавайте экземпляры этого класса для того, чтобы у вас была возможность ссылаться на них по ссылке. На практике это значит, что самая распространенная конструкция данных будет классом, а не структурой.

Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.

Сообщить об опечатке

Текст, который будет отправлен нашим редакторам: