c#之枚举标志位

本文介绍了C#中使用[Flags]属性创建枚举标志位的概念,通过二进制表示法来存储和检查多个状态。示例中展示了如何通过枚举标志位设置物品的状态,并提到在Unity中无法直接使用Enum.HasFlag方法的问题,提出了自定义实现的必要性。
摘要由CSDN通过智能技术生成

参考网址:https://msdn.microsoft.com/zh-cn/library/system.enum.hasflag.aspx

使用[Flags],就是用一个int数值存储多个状态位,所有的数据在计算机里计算都会转换为二进制, 1 是 0 否。

所以枚举标志位就是根据状态依次设置值。

举例:

    [Flags]
    public enum FruitItems {
        Strawberry = 1,                 //草莓
        Apple = Strawberry * 2,         //苹果
        Blueberry = Apple * 2,          //蓝莓
        Cherry = Blueberry * 2,         //樱桃
        Grape = Cherry * 2,             //葡萄
        Peach = Grape *2                //桃
    }

    void Start() {
        FruitItems myOrder = FruitItems.Apple | FruitItems.Cherry | FruitItems.Grape;
        //Debug.Log("" + myOrder.HasFlag(FruitItems.Apple));
    }

用物品的开头字母代表枚举,从后往前依次是:

P G C  B A S

例如myOrder, A 1、C 1、G 1,所以二进制依次是 011010,转换为十进制就是26。这样一个int值就可以储存多个状态。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值