比方说,我有这样的枚举:如何让复杂的枚举值的字符串表示
[Flags]
public enum SomeType
{
Val1 = 0,
Val2 = 1,
Val3 = 2,
Val4 = 4,
Val5 = 8,
Val6 = 16,
All = Val1 | Val2 | Val3 | Val4 | Val5 | Val6
}
和一些变量:
SomeType easyType = SomeType.Val1 | SomeType.Val2;
SomeType complexType = SomeType.All;
如果我要遍历第一个枚举我可以简单的价值这样做:
foreach(string s in easyType.ToString().Split(','))
{ ... }
然而,当我尝试同样的方法适用于“复杂类型”我得到的值“所有”,这当然是因为它也是枚举的可能值之一。但是,有没有一种方法可以真正看到SomeType.All创建的值是什么?我知道我可以通过像所有的值进行手动循环:
if(complexType.HasFlag(ManualType.Val1) && ...
我认为问题是,你不应该把`这里面枚举All`。既然你把它标记为[[Flags]`,那么把它组合在一起是一个坏主意。 – 2011-02-11 12:11:56
然后我(和其他人)必须始终记住在使用SomeType进行某些操作时使用适当的枚举组合。 – IamDeveloper 2011-02-11 12:12:57
你可以发布原始枚举而不是毫无意义的`SomeType`吗? – 2011-02-11 12:13:50