Marshall结构指向C#中对象列表的指针

时间:2018-07-04 12:41:51

标签: c# marshalling

我有对象列表,必须从结构到指针进行编组,然后发送到非托管代码,

IntPtr buffer = Marshal.AllocHGlobal(Marshal.SizeOf(typeof(StructClassA)) * ListClassA.Length);
for (int Index = 0; Index < ListClassA.Length; Index++)
{
       var intrt = (IntPtr)(buffer.ToInt64() + (Index * Marshal.SizeOf(typeof(StructClassA))));
       Marshal.StructureToPtr(ListClassA[Index], intrt, false);
}

ClassA
{
    public float floatA;
    public float floatB;
    public float floatC;

    public ushort Id;
    public short ints;
    public byte type;
}

这是正确的方式还是进行封送处理的更好选择? 问题是,如果列表包含300到500个对象,那么我们必须循环那么多次。

0 个答案:

没有答案