【发布时间】:2011-01-19 11:09:41
【问题描述】:
C# 中的布尔变量如何存储在内存中?也就是说,它们是否存储为一个字节而其他 7 位被浪费了,或者在数组的情况下,它们是否被分组为 1 字节的布尔块?
这回答了关于 Java (Why is Java's boolean primitive size not defined?) 的相同问题。 Java 和 C# 在这方面是否相同?
【问题讨论】:
-
关于“和其他 7 位被浪费” - 是的。虽然这取决于语言如何它们被浪费:C# 值
true用零浪费了 7 个额外的位,而 VB.NET 值true用 1 浪费了它们(尽管你永远不必知道,. NET 将所有非零都视为真)。 -
我从上面撤回我的声明:当我编写一个类型来演示该行为时,我发现当前的 VB.NET (.NET 4.8) 也只为
true设置最低位。 (如果过去的行为不同,或者我完全弄错了,我没有进一步调查 - 如果您了解更多,请随时发表评论)。我可以通过我的测试确认“.NET 将所有非零都视为真实”的声明。