首页 > 解决方案 > 具有多个值的枚举

问题描述

在我的模型中,我有这个代码

public enum StockStatus
{       
    Origin= 1,

    [Display(Name = "In Transit")]
    InTransit = 5,
    [Display(Name = "Port Louis")]
    PortLouis = 6,
    Yard = 7,
    Requested = 8
}

我需要能够为 Origin 设置多个值,如下所示

public enum StockStatus
{       
    Origin= 1,2,3,4,        

    [Display(Name = "In Transit")]
    InTransit = 5,
    [Display(Name = "Port Louis")]
    PortLouis = 6,
    Yard = 7,
    Requested = 8
}

我知道这不好,但我需要能够这样做

标签: c#enums

解决方案


您需要将枚举作为标志,并且该值必须是按位唯一的(2 的幂)。

[Flags]
public enum MyEnum
{

    Origin= no1 | no2 | no3 | no4,

    no1 = 1,
    no2 = 1 << 1,
    no3 = 1 << 2,
    no4 = 1 << 3,

    [Display(Name = "In Transit")]
    InTransit = 1 << 4,
    [Display(Name = "Port Louis")]
    PortLouis = 1 << 5,
    Yard = 1 << 6,
    Requested = 1 << 7
}

推荐阅读