Если держатель данных будет неизменным, вопрос о структуре и классе, скорее всего, будет зависеть от среднего числа ссылок, которые будут существовать для каждого экземпляра. Если у одного есть массив TwentyFourByteStruct [1000], этот массив будет занимать 24 000 байтов, независимо от того, имеет ли каждый элемент различное значение, все элементы имеют одинаковое значение или где-то между ними. Если у вас есть массив TwentyFourByteClass [1000], этот массив займет 4000 или 8000 байт (для 32/64-разрядных систем), а каждый отдельный экземпляр TwentyFourByteClass, который создается, займет около 48 байт. Если все элементы массива содержат ссылку на один и тот же объект TwentyFourByteClass, общий объем составит 4 048 или 8 048 байт. Если все элементы массива содержат ссылки на разные объекты TwentyFourByteClass, общий объем составит 52 000 или 56 000 байт.
Что касается производительности во время выполнения, лучшая производительность, которую вы можете получить, - это, как правило, передача структур по ссылке. Передача структур по значению потребует их копирования, что может дорого обойтись для структур размером более 16 байт (.net включает в себя оптимизации для структур размером 16 байт или меньше), но стоимость типа значения по ссылке одинакова, независимо от того, равен ли он 1 байту или 16 000 байт.