包含数组的Struct的大小

本文关键字:Struct 包含 数组 | 更新日期: 2023-09-27 18:03:53

我使用c#结构体作为伪联合(通过使用LayoutKind。显式属性),在我的程序中传递网络消息。我知道如何使用基本类型的布局,因为它们的大小是已知的。

然而,如果其中一个字段是字符数组,我该如何做到这一点?我知道一个char是2字节的数据(当在unicode格式),但有多大是char[]?我是否认为这是一个引用类型,所以它的大小不只是项数* 2?

我该如何布局这个结构体?这可能吗?

包含数组的Struct的大小

size为引用的宽度;x86上是4字节,x64上是8字节。数组的大小无关紧要,因为该数组是单独存储在堆上的。如果您想要数据序列化为字节流,那么这可能取决于您对char数据使用的编码。UTF16确实是2 *字符数,但UTF8或UTF32将是不同的。

这很奇怪,它不应该等于长度乘以每个字符的字节数吗?