0
Marshal class不包含ReadBool
方法。如果我的C++結構包含bool
字段,那麼我應該如何閱讀它?我試過這樣做:(bool) Marshal.ReadInt32(intPointer, offset)
但不允許將int32投射到布爾。如何使用Marshal類從非託管內存讀取bool?
Marshal class不包含ReadBool
方法。如果我的C++結構包含bool
字段,那麼我應該如何閱讀它?我試過這樣做:(bool) Marshal.ReadInt32(intPointer, offset)
但不允許將int32投射到布爾。如何使用Marshal類從非託管內存讀取bool?
在C++ is implementation-definedsizeof(bool)
,所以它可能是更好的,以限定在結構中的字段作爲一個已知的大小(例如,int32_t
或BOOL
)的整數。然後,它習慣使用0
指示false
和不可─0
指示true
:
// C++
intPointer->int32_t_field = bool_value ? 1 : 0;
// C#
bool result = Marshal.ReadInt32(intPointer, offset) != 0;