c# - 包含数组的结构体的大小

标签 c# .net arrays struct union

我使用 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/

相关文章:

c# - 仅对一段代码使用花括号(不使用 for、if、try 等)有什么好处吗?

c# - 带参数的 XAML 中的自定义 UserControl(按钮)

C# ZipArchive - 如何在不写入磁盘的情况下嵌套内部 .zip 文件

c# - ListViewColumnSorter 导致在 C# 中添加 listView 项时出现性能问题?

c# - .NET 4.5 中的任务与线程

.NET Core 互操作,Marshal.FreeHGlobal 使程序崩溃

c# - 使用 UdpClient 发送数据时访问被拒绝

java - 如何根据我的消息更改每个像素的 LSB

c - 使用多维数组添加两个矩阵时出现问题

c - 在 C 中将文件 Strtok 放入数组中