【问题标题】:Does a .net bool[] use one bit or one byte per item?.net bool[] 每个项目使用一位还是一个字节?
【发布时间】:2010-11-10 23:27:21
【问题描述】:

在 .net 中,bool[] 是每个数组项使用一位还是一个字节?即,它会自动打包布尔值吗?我知道单个 bool 使用 1 个字节,但也许 CLR 有 bool[] 的特殊情况...

【问题讨论】:

    标签: .net arrays storage


    【解决方案1】:

    关于大小,它将布尔数组存储为字节数组,没有特殊情况。

    如果要打包数据,您可能需要检查 BitArray 类。

    【讨论】:

      【解决方案2】:

      你想要的是BitArraybool[] 没有得到 CLR 的特殊处理。

      【讨论】:

        【解决方案3】:

        每个值一个字节。我正在尝试查找实际指定的位置(如果确实如此),但对于当前的 .NET CLR 来说确实如此。

        编辑:这是某种通过打印sizeof(bool) 来确认的,它打印1 - 尽管C# 中的sizeof 运算符最终不会调用sizeof IL 指令...

        【讨论】:

        • 其他语言(Java/C/C++)中的布尔值是多少?
        • 在 Java 中,布尔值也是 1 个字节(在数组中)。
        • 在 C/C++ 中也是 1 字节大小
        • 未指定 C++ 中 bool 的大小。只保证它至少应该是 char 的大小(至少 8 位),并且最多等于 long 的大小。我认为真正旧版本的 VC++ 和 g++ 将其实现为枚举 typedef,这将使其与 int 一样大。在较新版本的 VC++ 中,它是大小为 1 字节的内置类型;新版本的 g++ 可能也是如此。
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-05-02
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多