struct中的对齐错误/非对象字段

我对我的结构使用以下定义:

[StructLayout(LayoutKind.Explicit)] public struct NetworkMessage { [FieldOffset(0)] public MessageType Type; [FieldOffset(4)] public bool GatewayMessage; //AuthenticationRequest [FieldOffset(5)] public char[] AuthenticationUsername; //20 charachters long [FieldOffset(13)] public byte[] AuthenticationPasswordHash; // 16 bytes long //Authntication result [FieldOffset(5)] public bool AuthenticationSuccess; [FieldOffset(6)] public char[] AuthenticationMessage; } 

但是,当我尝试使用此类型时,我收到此错误消息:

System.TypeLoadException:无法从程序集中加载类型“NetworkMessage”,因为它包含偏移量为5的对象字段,该字段未正确对齐或由非对象字段重叠。

非对象字段是指一个值是一个值,一个是引用吗? 我可以不混用这些吗?

任何帮助深表感谢。

谢谢,Venatu

编辑:抱歉,我应该更加明确,因为我打算将其作为一种伪结合。 重叠是字段是有意允许我使用一个结构作为多种类型的消息,使缓冲和传递系统更容易。 对不起任何困惑

数组必须以4字节边界开始。

有关在显式结构中使用数组的更多信息,请参阅此文章。 它还提到了数组的偶数边界问题,并描述了显式结构中数组的一些替代选项。

http://www.developerfusion.com/article/84519/mastering-structs-in-c/

另请参见非对象字段错误错误对齐或重叠