当前位置:  开发笔记 > 开发工具 > 正文

为什么.NET中的布尔值是4个字节?

如何解决《为什么.NET中的布尔值是4个字节?》经验,为你挑选了3个好方法。

为什么System.Boolean占用4个字节?它只存储一个状态,无论是还是,它可以存储在比4个字节更少的空间中.



1> P Daddy..:

A bool实际上只有1个字节,但对齐可能会导致在32位平台上使用4个字节,甚至在64位平台上使用8个字节.例如,Nullable(aka bool?)类型使用完整的32位或64位 - 取决于平台 - 即使它只包含两个bools. 编辑:正如Jon Skeet指出的那样,对齐的填充并不总是存在.例如,Nullables 数组每个对象只需2个字节而不是4个或8个.

但是bool如果你有很多要存储的话,即使代表a的8位也可能被认为是浪费.因此,如果您创建一个具有多个bools作为成员的Nullable<>类型(或使用多种类型),并且您的类的用户可能会创建它的许多实例,您可以考虑使用BitVector32替代.例如,框架本身使用这种技术来减少许多Windows窗体控件的内存占用.


甚至Nullable 在某些情况下只会使用两个字节 - 例如,如果你有一个数组.
+1,你的答案非常好,其他用户正在窃取它.

2> Artelius..:

因为它很快.

32位处理器通常使用32位值.使用较小的值涉及较长的指令或额外的逻辑.



3> Matt Hamilto..:

谷歌搜索System.Boolean大小的第一个结果告诉我,它与内存对齐有关.推动四字节Int32比使用单个字节/位更快.


今天的第一个谷歌答案是这个问题.由于问题已存档,请在将来添加特定链接.
推荐阅读
php
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有