C #: члены структуры более производительны? - PullRequest
0 голосов
/ 01 декабря 2009

В записи в блоге Лука Болоньезе обдумывает эту идею о структурах и классах как полях членов:

Причина использования структуры состоит в том, чтобы не выделить дополнительный объект на стек. Это позволяет этому решению быть как «исполнитель», как просто закодировав поля самого класса. Или в хотя бы я так думаю ...

Насколько это точно?

Во-первых, разве он не имел в виду выделить дополнительный объект в куче 1012 *?

И разве использование структур не приведет к незначительному сокращению времени выделения (особенно если члены класса загружены лениво) за счет увеличения объема памяти?

Вы бы порекомендовали эту практику структур над классами в определенных ситуациях?

1 Ответ

4 голосов
/ 02 декабря 2009

Я думаю, он действительно хотел написать кучу, он просто написал стек по ошибке.

Вопрос о структурах или классах поднимается довольно часто. Вот один пример . Я думаю, что лучше всего следовать этому общепринятому совету:


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

По сути, на этой странице представлен контрольный список из 4 пунктов, в котором говорится об использовании класса, если только ваш тип не соответствует всем критериям.

Не определяйте структуру, если тип не имеет всех следующих характеристик:

* It logically represents a single value, similar to primitive types (integer, double, and so on).
* It has an instance size smaller than 16 bytes.
* It is immutable.
* It will not have to be boxed frequently.

Есть ли случаи, когда вы не должны следовать этому совету? Возможно, но только после того, как вы докажете это с помощью профилирования.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...