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