将布尔值赋给枚举类型C#的数组

时间:2017-04-19 11:13:56

标签: c# enums boolean

从这个枚举类型:

public enum MySqlObjectType
{
    Table = 1,
    Procedure = 2,
    View = 4,
    Function = 8,
    Trigger = 512,
    User = 128,
    Event = 256
}

我想做这样的事情:

Options.Load[MySqlObjectType.Event] = true;
Options.Load[MySqlObjectType.Function] = false;

选项类中的字段应如何显示,以便我可以执行上述操作?有可能吗?

2 个答案:

答案 0 :(得分:2)

你只需要一个字典来存储枚举 - >布尔键/值对:

public class Options
{
    public Options()
    {
        Load = new Dictionary<MySqlObjectType, bool>();
    }

    public Dictionary<MySqlObjectType, bool> Load { get; set; }
}

正如Ivan所说,你可能只想要一个简单的标志枚举:

public enum MySqlObjectType
{
    Table = 1,
    Procedure = 2,
    View = 4,
    Function = 8,
    Trigger = 512,
    User = 128,
    Event = 256
}

请注意,所有值都应为2的幂且唯一。

MySqlObjectType value = MySqlObjectType.Event | MySqlObjectType.User;

要检查是否设置了值,您可以执行以下操作:

if ((value & MySqlobjectType.Event) == MySqlObjectType.Event) {

我认为您也可以在.NET Framework v4中执行此操作:

if (value.HasFlag(MySqlObjectType.Event)) {

答案 1 :(得分:1)

创建单个标志枚举的另一种方法是:

&#13;
&#13;
public enum MySqlObjectType
{
    Table = 1 << 0,
    Procedure = 1 << 1,
    View = 1 << 2,
    Function = 1 << 3,
    Trigger = 1 << 9,
    User = 1 << 7,
    Event = 1 << 8
}
&#13;
&#13;
&#13;