c# - 从组合枚举值中获取所有枚举常量的更好方法

标签 c# enums

<分区>

我正在尝试从 Type 枚举变量中获取所有枚举值:

[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/

相关文章:

enums - 枚举如何增强?

objective-c - 解决循环依赖

c# - Linq 缓慢具体化复杂查询

c# - 创建 AD 用户抛出 Authorization_RequestDenied : "Insufficient privileges to complete the operation." exception

c# - 将枚举的多个副本添加到列表的惯用方法

vb.net - 将枚举标志传递给类或过程

java - 枚举类声明并在另一个类中使用它

c# - 通过 MVC3 提供音频文件的问题 |使用各种 HTML5 播放器

c# - 如果我尝试打开 PWM 引脚,Windows 10 Iot Core 应用程序会崩溃

c# - WinForms, CheckedListbox 自动列宽