关于StructLayoutAttribute类的疑问
新换了一个工作,遇到了软件和硬件使用Socket交换信息,而信息形式则是使用的byte数组,但是在熟悉代码的时候,却发现了这么一段代码。
/// <summary> /// 信息头 /// </summary> [Serializable] [StructLayoutAttribute(LayoutKind.Sequential,CharSet.Ansi,Pack=1)] public struct MessageHead { /// <summary> /// 功能码枚举 /// </summary> [System.Runtime.InteropServices.MarshalAs(UnmanagedType.U1,SizeConst=1)] public byte OperationCode; /// <summary> /// 数据类型 /// </summary> [System.Runtime.InteropServices.MarshalAs(UnmanagedType.U1,SizeConst=1)] public byte DataType; /// <summary> /// 帧ID号 /// </summary> [System.Runtime.InteropServices.MarshalAs(UnmanagedType.U2,SizeConst=2)] public ushort FrameID; /// <summary> /// 保留(存储返回结果) /// </summary> [System.Runtime.InteropServices.MarshalAs(UnmanagedType.U1,SizeConst=1)] public byte Retain; /// <summary> /// 数据长度 /// </summary> [System.Runtime.InteropServices.MarshalAs(UnmanagedType.U4,SizeConst=4)] public uint DataLength; }