我使用 C# 结构作为伪联合(通过使用 LayoutKind.Explicit 属性),在我的程序中传递网络消息。我了解如何使用原始类型的布局,因为它们的大小已知。
但是,如果其中一个字段是字符数组,我该如何执行此操作?我知道 char 是 2 个字节的数据(采用 unicode 格式时),但是 char[] 有多大?我是否正确地相信这是一个引用类型,因此它的大小不仅仅是项目数* 2?
我将如何为此布局结构?这可能吗?
最佳答案
尺寸是引用的宽度;因此 x86 上为 4 个字节,x64 上为 8 个字节。数组的大小无关紧要,因为数组单独存储在堆上。如果您想要将该数据序列化为字节流,那么它可能取决于您对 char
数据使用的编码。 UTF16 确实是 2 * 个字符,但 UTF8 或 UTF32 会有所不同。
关于c# - 包含数组的结构体的大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6878888/