问题描述
[StructLayout(LayoutKind.Explicit,Size = 17,CharSet = CharSet.Ansi)]
public struct MyStruct
{
[MarshalAs(UnmanagedType.ByValTStr,SizeConst = 17)]
[FieldOffset(0)] public string myString;
}
但是,当我使用Marshal.copy(...)
复制该结构以对其进行测试时,输出的字符串看起来像是null还是空。
MyStruct myStruct = new MyStruct { myString = "Hello,World!" };
byte[] bytes = new byte[Marshal.SizeOf(typeof(MyStruct))];
GCHandle handle = GCHandle.Alloc(myStruct,GCHandleType.Pinned);
Marshal.copy(handle.AddrOfPinnedobject(),bytes,Marshal.SizeOf(typeof(MyStruct)));
handle.Free();
handle = GCHandle.Alloc(bytes,GCHandleType.Pinned);
myStruct = Marshal.PtrToStructure<MyStruct>(handle.AddrOfPinnedobject());
handle.Free();
myStruct.myString
读为null。
我是否想念某些东西(可能很明显)?
谢谢
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)