【发布时间】:2014-04-02 12:36:23
【问题描述】:
如何定义具有动态大小数组的结构?
对吗?
struct MyStruc {
public int len;
[MarshalAs(UnmanagedType.LPArray, SizeParamIndex=0)]
public int buf[];
}
【问题讨论】:
-
什么是“动态大小的数组”?像
List<int>这样的数组? -
您必须将其设为
IntPtr或转到unsafe(后者可能更容易让事情正常运行)。 -
我不能使用 List,因为在 c++ 中的大小定义如 int*
-
它不是动态调整大小的,在 32 位模式下它只占用 8 个字节。您肯定是指 UnmanagedType.ByValArray 吗?这是 C 代码中的常见技巧。
-
不,
ByValArray用于在编译时知道大小的内联数组。
标签: c# struct pinvoke marshalling