gpt4 book ai didi

c# - 获取给定 System.Type 的结构的大小

转载 作者:太空狗 更新时间:2023-10-29 21:41:54 24 4
gpt4 key购买 nike

给定结构 MyStruct,我可以在不安全代码中使用 sizeof(MyStruct) 获取该结构实例的大小。但是,我想在给定结构的 Type 对象的情况下获取结构的大小,即 sizeof(typeof(MyStruct))。有 Marshal.SizeOf,但它返回 unmanaged 编码大小,而我想要该结构的 managed 大小。

最佳答案

没有记录的方法来发现托管结构的布局。 JIT 编译器很容易利用这一点,它将重新排序结构的字段以获得最佳包装。按照 [StructLayout] 属性的指示,总是需要编码(marshal)处理以获得可预测的布局。您必须跳过 Marshal.StructureToPtr() 圈。无论您自己做还是让 pinvoke marshaller 为您做。

Marshal.SizeOf(Type) 为您提供编码的 struct 的大小。 this answer 中提供了有关其为何以这种方式工作的更多背景信息。 .

关于c# - 获取给定 System.Type 的结构的大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4472465/

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