sizeof() structures not known. Why?

怎甘沉沦 提交于 2019-11-27 23:30:46

The sizes of short and float are constant - but how the CLR decided to pack that float in memory isn't necessarily constant. For example, on a 64-bit processor it may decide to align each value on an 8-byte boundary.

From the C# 4 spec, section 18.5.8:

For certain predefined types, the sizeof operator yields a constant value as shown in the table below.

[...]

For all other types, the result of the sizeof operator is implementation-defined and is classified as a value, not a constant.

[...]

For alignment purposes, there may be unnamed padding at the beginning of a struct, within a struct, and at the end of a struct.

Note that you can use sizeof in this situation, within an unsafe context. Whether you should use that or Marshal.SizeOf depends on what you're trying to do.

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!