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

如何在c#中的内存中直接创建结构?,c#,c++,pinvoke,C#,C++,Pinvoke,我对C有问题。我尝试调用C++方法。< /P> void SetPropertyInfoList(int count, ref AfwPropertyInfo propertyInfo); 我想用x AfwPropertInfo结构创建一个内存块。在记忆中,我不知道如何在彼此之后直接做这件事 有人能帮我吗?你实际上有一个数组。我希望C++代码看起来像这样: void SetPropertyInfoList(int count, AfwPropertyInfo* propertyInfo);

我对C有问题。我尝试调用C++方法。< /P>
void SetPropertyInfoList(int count, ref AfwPropertyInfo propertyInfo);
我想用x AfwPropertInfo结构创建一个内存块。在记忆中,我不知道如何在彼此之后直接做这件事


有人能帮我吗?

你实际上有一个数组。我希望C++代码看起来像这样:

void SetPropertyInfoList(int count, AfwPropertyInfo* propertyInfo);
[DllImport(...)]
static extern void SetPropertyInfoList(
    int count, 
    AfwPropertyInfo[] propertyInfo
);
现在,
AfwPropertyInfo*
没有完全指定参数是什么。它可以是指向单个
AfwPropertyInfo
struct的指针。或者它可以是
AfwPropertyInfo
的数组。显然,在这种情况下是后者

将p/invoke声明更改为如下所示:

void SetPropertyInfoList(int count, AfwPropertyInfo* propertyInfo);
[DllImport(...)]
static extern void SetPropertyInfoList(
    int count, 
    AfwPropertyInfo[] propertyInfo
);
创建结构的数组:

AfwPropertyInfo[] propertyInfo = new AfwPropertyInfo[count];
然后在调用非托管函数之前初始化数组的成员:

SetPropertyInfoList(propertyInfo.Length, propertyInfo);

您是否尝试过使用
AfwPropertyInfo[2]
创建结构数组?谢谢您的快速回答。我的方法属于一个对象。方法如何知道它属于哪个对象?您不能p/invoke实例方法。仅限非成员函数或静态函数。