Я рекомендую никогда не использовать структуру , если вы не имеете в виду очень специфический пример использования и точно знает, как структура будет полезна системе .
Хотя структуры C # допускают члены, они работают немного иначе, чем классы (не могут быть подтипированы, виртуальная диспетчеризация отсутствует, может жить полностью в стеке), и поведение меняется в зависимости от подъема, и т. д. (Подъем - это процесс продвижения типа значения в кучу - сюрприз!)
Итак, чтобы ответить на вопрос: я думаю, что один из самых больших неправильных символов в C # использует структуры «для производительности». Причина этого заключается в том, что «накладные расходы» невозможно измерить по-настоящему, не видя, как они взаимодействуют с остальной частью системы и той ролью, которую он играет. Это требует профилирования и не может быть суммировано с таким тривиальным утверждением, как «меньше накладных расходов».
Существует несколько хороших случаев для типов структурных значений - одним примером является составное значение RGB, сохраненное в массиве для изображения. Это связано с тем, что тип RGB небольшой, в изображении может быть очень , типы значений могут быть хорошо упакованы в массивы и могут помочь сохранить лучшую локальность памяти и т. Д.