Поделиться через


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

Классы являются ссылочными типами, а структуры — типами значения. Ссылочные типы размещаются в куче, а управление памятью осуществляется сборщиком мусора. Типы значения размещаются на стеке или непосредственно в коде и становятся недоступны, когда находятся вне области видимости. В общем случае для размещения и освобождения типов значения требуется меньше затрат. Однако, если эти типы используются в сценарии, в котором требуется значительное количество преобразований упаковки-распаковки, они работают хуже по сравнению со ссылочными типами. Дополнительные сведения см. в разделе Упаковка-преобразование и распаковка-преобразование (Руководство по программированию на C#).

Дополнительные сведения о типах значения и ссылочных типах см. в разделе Система общих типов CTS.

Рекомендуется определять структуру вместо класса, если экземпляры типа малы и имеют короткое время существования или внедрены в другие объекты.

Определяйте структуру только в том случает, если тип обладает всеми приведенными ниже характеристиками.

  • Тип логически представляет единичное значение подобно примитивным типам (integer, double и т.п.).

  • Размер экземпляра не превышает 16 байт.

  • Тип является неизменяемым.

  • Тип не нуждается в частом выполнении упаковка-преобразований.

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

Фрагменты — © Корпорация Майкрософт (Microsoft Corp.), 2005. Все права защищены.

Фрагменты — © Addison-Wesley Corporation. Все права защищены.

Для дополнительной информации о разработке руководящих принципов, смотрите "руководства по разработке рамок: Конвенций, идиомы и шаблоны для повторного использования.NET библиотек"книга, Кшиштоф Cwalina и Брэд Абрамс, опубликованных Addison-Wesley, 2005 года.

См. также

Другие ресурсы

Правила разработки типов

Руководство по разработке библиотек классов