Есть фиксированные накладные расходы, связанные с объектом .NET, как более подробно описанные в этом вопросе SO: Что такое издержки памяти объекта .NET, равные 12 или 24 байта в зависимости от того, работаете ли вы в 32-битном или 64-битном процессе.
Тем не менее, базовые типы значений, такие как int, double, boolean
и т.д. не имеют накладных расходов, потому что они являются типами значений.
Где это оставляет пользовательские типы struct
, которые вы собрали вместе в своем приложении? С одной стороны, они представляют собой типы значений, такие как int, double, boolean
выше [так что не должны налагать накладные расходы], но, с другой стороны, они получают косвенный характер из System.Object
и поэтому должны (технически) налагать накладные расходы.