日期:2014-05-18  浏览次数:20986 次

结构体中要放一个固定长度的string对象和byte[]对象,如何做?
struct CStruct
{
string s; // 期望这个string包含20个字符和1个结束符
byte[] b; // 期望这个数组包含20个元素
}

------解决方案--------------------
[StructLayout(LayoutKind.Sequential)]
struct CStruct {
[MarshalAs(UnmanagedType.LPStr,SizeConst=21)]
public string s;
[MarshalAs(UnmanagedType.LPArray,SizeConst=20)]
public byte [] b;
}
------解决方案--------------------
探讨
[StructLayout(LayoutKind.Sequential)]
struct CStruct {
  [MarshalAs(UnmanagedType.LPStr,SizeConst=21)]
  public string s;
  [MarshalAs(UnmanagedType.LPArray,SizeConst=20)]
  public byte [] b;
}

------解决方案--------------------
探讨
UnmanagedType中的类型有些看起来很混淆,谁能详细解释一下,谢谢!