Csharp/C#教程:C#为什么sizeof不安全以及如何以安全的方式获取结构的大小?分享


C#为什么sizeof不安全以及如何以安全的方式获取结构的大小?

我已经定义了一个通过套接字发送的结构。 我想得到它的大小,但sizeof是不安全的,“ System.Runtime.InteropServices.MarshalSizeOf ”也是如此。 有没有办法以安全的方式获得它的大小?

对于托管结构,没有办法做到这一点。 Marshal.SizeOf只会返回构成结构的封送类型的数据大小……在某些平台上,托管类型可能是正确的,但在其他平台上则不然。

这是设计使得JIT可以根据其运行的平台不同地放置结构。

更多信息: Chris Brumme的博客

请参阅我的博客文章,了解一个包装器库,它允许您确定JIT将定义托管类型的大小(在运行时)。 它的工作原理是使用在C#中根本不暴露的sizeof IL指令。 它可以在没有特殊权限的情况下运行,并且可以validation。

注意:这可能是您实际想要的,也可能不是。 对于实际上只有一个字节的结构,这可能会返回8 。 我完全不理解你的问题,所以我不确定这是不是你想要的。

上述就是C#学习教程:C#为什么sizeof不安全以及如何以安全的方式获取结构的大小?分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—计算机技术网(www.ctvol.com)!

本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。

ctvol管理联系方式QQ:251552304

本文章地址:https://www.ctvol.com/cdevelopment/955016.html

(0)
上一篇 2021年11月21日
下一篇 2021年11月21日

精彩推荐