Most efficient way to parse a flagged enum to a list

前端 未结 6 1415
猫巷女王i
猫巷女王i 2021-01-01 09:06

I have a flagged enum and need to retrieve the names of all values set on it.

I am currently taking advantage of the enum\'s ToString() method which returns the eleme

6条回答
  •  清歌不尽
    2021-01-01 09:36

    Why do you need a list? Everything is already stored in the flags:

    [Flags]
    enum Roles
    {
        Read = 0x1,
        Write = 0x2,
        Delete = 0x4,
    }
    

    Then assign roles:

    var roles = Roles.Read | Roles.Write;
    

    And whenever you need to check if a given role has been you don't need to look in a list, but simply look in the roles enumeration:

    if ((roles & Roles.Read) == Roles.Read)
    {
        // The user has read permission
    }
    if ((roles & Roles.Write) == Roles.Write)
    {
        // The user has write permission
    }
    

提交回复
热议问题