.NET对象存在固定的开销,具体细节在这个SO问题中有更详细的概述: 什么是.NET对象的内存开销,根据您所处的32位或64位进程的不同,其大小为12或24字节。
话虽如此,像int、double、boolean
等基本值类型没有开销,因为它们是值类型。
那么您在应用程序中定义的自定义struct
类型属于哪一类呢?一方面,它们像上面提到的int、double、boolean
一样是值类型[所以不应该产生开销],但另一方面,它们间接地派生自System.Object
,因此(技术上)应该产生开销。
System.Object
- 例如System.Int32 : System.ValueType
。 - Jon Skeet