C# 从组合枚举值获取所有枚举常量的更好方法
我正在尝试从类型枚举变量获取所有枚举值:C# 从组合枚举值获取所有枚举常量的更好方法,c#,enums,C#,Enums,我正在尝试从类型枚举变量获取所有枚举值: [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>(
[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() ) );
}
[标志]
枚举类型
{
XML=1,
HTML=2,
JSON=4,
CVS=8
}
静态void Main(字符串[]参数)
{
Type Type=Type.JSON | Type.XML;
列表类型=新列表();
foreach(type.ToString().Split(',')中的字符串元素)
Add((Type)Enum.Parse(typeof(Type),elem.Trim());
}
有更好的方法吗?列表类型=枚举
List<Type> types = Enum
.GetValues(typeof(Type))
.Cast<Type>()
.Where(val => (val & type) == val)
.ToList();
.GetValues(typeof(Type))
.Cast()
。其中(val=>(val&type)==val)
.ToList();
获得所需结果的另一种方法。在命名枚举时,首先尝试不要使用“Type”一词。使用EnumType或其他方法使用enum.GetValues..类似这样的方法
public static List<EnumType> GetValues(Type enumType)
{
List<EnumType > enums = new List<EnumType >();
if (!enumType.IsEnum) throw new ArgumentException(Enum type not found");
foreach (EnumType value in Enum.GetValues(enumType))
enums.Add(value);
return enums;
}
公共静态列表GetValue(类型enumType)
{
列表枚举=新列表();
如果(!enumType.IsEnum)抛出新的ArgumentException(找不到枚举类型”);
foreach(Enum.GetValues(EnumType)中的EnumType值)
添加(值);
返回枚举;
}
回答:这不是我真正想要的