C#互操作的类型基本位于System.Runtime.InteropServices命名空间下,本系列随笔主要记录本人在开发过程中使用的到一些类型函数、技巧及工具
计算类型的大小
int size = sizeof(GLYCOUNTER);//只能作用于unsafe代码上下文
获取类型实例的大小
Marshal.SizeOf(counters)
结构体与指针类型互相转换
//指针->结构体
GLYCOUNTERS counters = (GLYCOUNTERS)Marshal.PtrToStructure(glyParam.lpBuffer, typeof(GLYCOUNTERS));
//结构体->指针
IntPtr p = Marshal.AllocHGlobal(Marshal.SizeOf(counters));
Marshal.StructureToPtr(counters,p, false);
C/C++ 数据结构转C#结构体工具
![](https://images2015.cnblogs.com/blog/741758/201702/741758-20170209171312526-349336864.png)