Если вы создаете большие массивы, тогда это может сэкономить значительный объем памяти для использования более узких типов (меньше байтов), так как размер массива будет «ширина типа» * «количество элементов» + «накладные расходы» .
Однако по умолчанию я почти уверен, что в классах и структурах они будут упакованы по целым границам слова, например 32 бита = 4 байта. Замыкание все равно будет упаковано в 4-байтовое пространство.
Однако вы можете вручную настроить упаковку в структурах \ классах, используя структуру структуры:
http://msdn.microsoft.com/en-us/library/system.runtime.interopservices.structlayoutattribute(VS.71).aspx
Как и в случае любой проблемы, связанной с производительностью: «не думай - измеряй».
С точки зрения API может быть очень неприятно, когда приходится продолжать приведение типов от коротких к целым и т. Д., Как вы обнаружите, что большинство API, например, будут использовать целые числа.