首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >在C#中布尔值的大小是多少?它真的需要4个字节吗?

在C#中布尔值的大小是多少?它真的需要4个字节吗?
EN

Stack Overflow用户
提问于 2015-02-14 17:52:08
回答 1查看 31.5K关注 0票数 143

我有两个带有字节数组和布尔值的结构:

using System.Runtime.InteropServices;

[StructLayout(LayoutKind.Sequential, Pack = 4)]
struct struct1
{
    [MarshalAs(UnmanagedType.ByValArray, SizeConst = 3)]
    public byte[] values;
}

[StructLayout(LayoutKind.Sequential, Pack = 4)]
struct struct2
{
    [MarshalAs(UnmanagedType.ByValArray, SizeConst = 3)]
    public bool[] values;
}

和以下代码:

class main
{
    public static void Main()
    {
        Console.WriteLine("sizeof array of bytes: "+Marshal.SizeOf(typeof(struct1)));
        Console.WriteLine("sizeof array of bools: " + Marshal.SizeOf(typeof(struct2)));
        Console.ReadKey();
    }
}

这给出了以下输出:

sizeof array of bytes: 3
sizeof array of bools: 12

似乎一个boolean需要4个字节的存储空间。理想情况下,boolean只需要一个比特(falsetrue01等)。

这是怎么回事?boolean类型真的这么低效吗?

EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28514373

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档