gpt4 book ai didi

c# - 结构 C# 的大小

转载 作者:太空狗 更新时间:2023-10-30 00:23:39 25 4
gpt4 key购买 nike

我是 C# 新手。
我试图理解为什么结构大小在增长。
即:

struct Test
{
float x;
int y;
char z;
}

测试结构的大小实际上是 10 个字节 (float=4, int=4, char=2)。
但是当我尝试使用 Marshal.SizeOf(..) 方法获取 sizeof 结构时,我得到了 12.
在 C++ 中,我执行了 pragma pack(1) 来防止这种情况,但我如何在 C# 中执行此操作?

另一个问题:
当我尝试将测试结构转换为字节数组时,如果结构不是 [Serialize],我得到的字节数组大小为 12 个字节,但如果结构是 [Serialize] 我得到了大小为 170 字节的字节数组,为什么会这样?
谢谢! :)

最佳答案

这个

[StructLayout(LayoutKind.Sequential, Pack = 1)]
struct TestStruct
{
float x;
int y;
char z;
}

将给出 Marshal.SizeOf() == 9,因为 Marshal.SizeOf(typeof(char)) == 1 出于奇怪的历史原因。

但是

[StructLayout(LayoutKind.Sequential, Pack = 1, CharSet = CharSet.Unicode)]

有了这个你会得到 Marshal.SizeOf() == 10

关于c# - 结构 C# 的大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35716986/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com