具体来说,如果我创建一个只有一个字段的结构体,它实际上充当该值的包装器,将这个结构体传递给期望底层类型的P/Invoke方法是否安全?
我正在使用一个本地库,其API涉及许多指向结构体类型的指针,并且我想使用比
我正在使用一个本地库,其API涉及许多指向结构体类型的指针,并且我想使用比
IntPtr
更类型安全的东西来保持它们的所有内容,通过在通用结构体中包装IntPtr
。那会行吗?(并且是否已经完成了此操作?)
struct
只是一个内存中的 blob,没有其他额外的开销,除了struct
本身的成员。你甚至可以使用StructLayoutAttribute
指定在内存中布局struct
的方式。 - Yuval ItzchakovSomeFunction(IntPtr foo)
改为SomeFunction(MyStruct foo)
吗? - CodeCasterref MyStruct foo
是理想的,但是我从一个返回MyStruct*
的函数中获取MyStruct
,这个函数来自外部库。 - Mason Wheeler