This question already has answers here:
How to iterate over values of an Enum having flags?

(17 个回答)


7年前关闭。




我正在尝试从 Type enum 变量中获取所有 enum 值:
[Flags]
    enum Type
    {
        XML = 1,
        HTML = 2,
        JSON = 4,
        CVS = 8
    }


static void Main(string[] args)
{

    Type type = Type.JSON | Type.XML;

    List<Type> types = new List<Type>();

    foreach (string elem in type.ToString().Split(',') )
        types.Add(  (Type)Enum.Parse( typeof(Type), elem.Trim() ) );

}

有没有更好的方法来做到这一点?

最佳答案

List<Type> types = Enum
                     .GetValues(typeof(Type))
                     .Cast<Type>()
                     .Where(val => (val & type) == val)
                     .ToList();

获得预期结果的另一种方式。

关于c# - 从组合枚举值中获取所有枚举常量的更好方法,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/20116771/

10-16 19:34