我想通过包装来创建一个类型安全的指针结构IntPtr
:
struct Pointer<T>
{
private IntPtr ptr;
// methods marshalling from and to T
}
但我也希望能够将Pointer<T>
实例编组为IntPtr
s,因此它们需要具有相同的大小和布局。这有保证吗?
如果不是,是不是我加了
[StructLayout(LayoutKind.Sequential, Pack = 1)]
在顶部?
基本上,最后我应该能够编组这个 C 结构
struct Foo {
int *data;
};
使用这个 C# 结构:
struct Foo
{
public Pointer<int> data;
}