包含数组的Struct的大小

时间:2011-07-29 20:49:29

标签: c# .net arrays struct union

我使用c#struct作为伪联合(通过使用LayoutKind.Explicit属性),在我的程序周围传递网络消息。我理解如何使用原始类型的布局,因为它们具有已知的大小。

但是,如何使用其中一个字段作为char数组?我知道char是2字节的数据(当采用unicode格式时),但char []有多大?我是否相信这是一种参考类型,所以它的大小不仅仅是项目数量* 2?

我如何为此布局结构?它甚至可能吗?

2 个答案:

答案 0 :(得分:4)

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

答案 1 :(得分:0)

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