如何在c#的内存中直接创建结构?

Ray*_*yUp 3 c# c++ pinvoke

我有C#的问题.我试图调用以下C++方法.

void SetPropertyInfoList(int count, ref AfwPropertyInfo propertyInfo);
Run Code Online (Sandbox Code Playgroud)

我想用x AfwPropertInfo结构创建一个内存块.我不知道怎么在内存中直接跟在一起.

有谁能够帮我?

Dav*_*nan 5

你实际拥有的是一个数组.我希望C++代码看起来像这样:

void SetPropertyInfoList(int count, AfwPropertyInfo* propertyInfo);
Run Code Online (Sandbox Code Playgroud)

现在,AfwPropertyInfo*没有完全指定参数是什么.它可以是指向单个AfwPropertyInfo结构的指针.或者它可能是一个数组AfwPropertyInfo.显然,在这种情况下,它是后者.

将p/invoke声明更改为:

[DllImport(...)]
static extern void SetPropertyInfoList(
    int count, 
    AfwPropertyInfo[] propertyInfo
);
Run Code Online (Sandbox Code Playgroud)

创建一个结构数组:

AfwPropertyInfo[] propertyInfo = new AfwPropertyInfo[count];
Run Code Online (Sandbox Code Playgroud)

然后在调用非托管函数之前初始化数组的成员:

SetPropertyInfoList(propertyInfo.Length, propertyInfo);
Run Code Online (Sandbox Code Playgroud)