存储在一个List<DataPoint>?是12个字节还是16个字节?
public struct DataPoint
{
DateTime time_utc;
float value;
}
Run Code Online (Sandbox Code Playgroud)
C#中有任何sizeof函数吗?
Marshal.SizeOf()
http://msdn.microsoft.com/en-us/library/y3ybkfb3.aspx
CLR可以根据需要在内存中自由布局类型.因此不可能直接给出"尺寸".
但是,对于结构,可以使用StructLayout属性限制CLR的自由度:
C#编译器自动将Sequential布局类型应用于任何结构.在x86或x64计算机上,Pack值分别默认为4或8.所以你的结构的大小是8 + 4 = 12(x86和x64).
与类型在内存中的布局无关,也可以使用Marshal类在.NET中封送类型.编组器在编组类型时应用了几个转换,因此结果并不总是与CLR布局类型的方式相同.(例如,bool内存中的1个字节加上对齐,而编组器会将一个bool字节编组为4个字节.)
| 归档时间: |
|
| 查看次数: |
19374 次 |
| 最近记录: |