Marshal class不包含ReadBool
方法。如果我的c ++结构包含bool
字段,那么我应该如何阅读它?我试过这样做:(bool) Marshal.ReadInt32(intPointer, offset)
但是不允许将int32强制转换为bool。
答案 0 :(得分:2)
sizeof(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;