比方說,我有這樣的枚舉:如何讓複雜的枚舉值的字符串表示
[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