none
C#struct中字符串声明为ByValTStr长度计算不正确的问题 RRS feed

  • 问题

  • 这个struct用于定义需要在socket中传输的数据结构

    [Code]

    [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]

    public struct MsgHeader

    {

        public int TotalLength;

        [MarshalAs(UnmanagedType.ByValTstr, SizeConst = 10)]

        public string Check;

        public int Type;

        public int CID;

        public int GID;

        public double Date;

        public int ID;

        public int Remark;

    }

    [/Code]

    使用Marshal.Sizeof(typeof(MsgHeader))计算大小..得出56而不是预想中的52

    更改Check字段的SizeConst属性为9 依然计算出56,改为8,得到正确结果48...

    求教这是为什么..还是说我用错了string不能那么转换?

    2013年2月26日 1:41

答案

全部回复