C#写的结构体通过SIZEOF获取结构体的大小问题

kudiao119 2013-04-07 10:44:39
   public struct SXPSERVER
{
[MarshalAs(UnmanagedType.ByValArray, SizeConst=6)]
public byte [] bNodeaddr;
public uint dwIp;//IP地址
[MarshalAs(UnmanagedType.ByValTStr,SizeConst=16)]
public char[] szMachineType;
}
这是我的结构体
SXPSERVER s = new SXPSERVER();
int size = Marshal.SizeOf(s);
会提示SXPSERVER”不能作为非托管结构进行封送处理;无法计算有意义的大小或偏移量。 请问各位大婶是啥意思?
...全文
1195 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
qldsrx 2013-04-07
  • 打赏
  • 举报
回复
[MarshalAs(UnmanagedType.ByValTStr,SizeConst=16)]
public char[] szMachineType;
这代码错了,那个ByValTStr是用来修饰String类型的,你却用来修饰数组,如果是char[],必须用ByValArray,或者你直接修改为
[MarshalAs(UnmanagedType.ByValTStr,SizeConst=16)]
public string szMachineType;
这代码错了,那个ByValTStr是用来修饰St

110,538

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧