Выбор между классами и структурами
Классы являются ссылочными типами, а структуры — типами значения. Ссылочные типы размещаются в куче, а управление памятью осуществляется сборщиком мусора. Типы значения размещаются на стеке или непосредственно в коде и становятся недоступны, когда находятся вне области видимости. В общем случае для размещения и освобождения типов значения требуется меньше затрат. Однако, если эти типы используются в сценарии, в котором требуется значительное количество преобразований упаковки-распаковки, они работают хуже по сравнению со ссылочными типами. Дополнительные сведения см. в разделе Упаковка-преобразование и распаковка-преобразование (Руководство по программированию на C#).
Дополнительные сведения о типах значения и ссылочных типах см. в разделе Система общих типов CTS.
Рекомендуется определять структуру вместо класса, если экземпляры типа малы и имеют короткое время существования или внедрены в другие объекты.
Определяйте структуру только в том случает, если тип обладает всеми приведенными ниже характеристиками.
Тип логически представляет единичное значение подобно примитивным типам (integer, double и т.п.).
Размер экземпляра не превышает 16 байт.
Тип является неизменяемым.
Тип не нуждается в частом выполнении упаковка-преобразований.
Если одно или несколько этих условий не выполняется, создавайте вместо структуры ссылочный тип. Не следование этой рекомендации может негативно сказаться на производительности.
Фрагменты — © Корпорация Майкрософт (Microsoft Corp.), 2005. Все права защищены.
Фрагменты — © Addison-Wesley Corporation. Все права защищены.
Для дополнительной информации о разработке руководящих принципов, смотрите "руководства по разработке рамок: Конвенций, идиомы и шаблоны для повторного использования.NET библиотек"книга, Кшиштоф Cwalina и Брэд Абрамс, опубликованных Addison-Wesley, 2005 года.