首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

关于StructLayoutAttribute种的疑问

2012-10-17 
关于StructLayoutAttribute类的疑问新换了一个工作,遇到了软件和硬件使用Socket交换信息,而信息形式则是使

关于StructLayoutAttribute类的疑问
新换了一个工作,遇到了软件和硬件使用Socket交换信息,而信息形式则是使用的byte数组,但是在熟悉代码的时候,却发现了这么一段代码。

C# code
    /// <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;             }

实际效果是这个结构可以使用Marshal等类中的方法转换为一个byte数组,虽然知道了怎么使用,但是却不太明白是怎么一回事,在MSDN上也是很简单的写了一句话“类使用户可以控制类或结构的数据字段的物理布局”。
这个类到底是怎么样的一个机制,哪位高人可以给详细的说明一下,或者给一些相关的资料。

[解决办法]
非托管封送,如果帮助你还理解不了,我们也没有什么语言让你明白,你甚至可以记住他,知道什么时候用也可以

热点排行