我正在使用枚舉,當(dāng)我遇到枚舉的 [Flags] 時,我正在尋找一種將一系列枚舉值分組到不同組的方法。我注意到 ms-Docs 上的示例正在打印本地聲明的枚舉按位范圍的數(shù)組(作為枚舉名稱),但當(dāng)我在枚舉本身中聲明相同的范圍時卻沒有。我已經(jīng)測試過Enum.HasFlag(),它執(zhí)行相同的計(jì)算,但它不會以相同的方式打印它。我已經(jīng)找到了很多標(biāo)志迭代器的解決方案,但似乎該功能已經(jīng)存在于本地聲明的變量中。枚舉聲明值和本地聲明的枚舉有什么區(qū)別?[Flags] public enum DinnerItems{ None = 0, Entree = 1, Appetizer = 2, Side = 4, Dessert = 8, Beverage = 16, BarBeverage = 32, MyOrder = Appetizer | Entree | Beverage | Dessert,} DinnerItems flagValue = DinnerItems.None | DinnerItems.Side; DinnerItems myOrder = DinnerItems.Appetizer | DinnerItems.Entree | DinnerItems.Beverage | DinnerItems.Dessert; Console.WriteLine("{0} includes {1}: {2}", myOrder, flagValue, myOrder.HasFlag(flagValue));這將打印:MyOrder 包括 Side:False從枚舉中刪除 DiningItems.MyOrder 時的代碼相同:主菜、開胃菜、甜點(diǎn)、飲料包括配菜:False
1 回答

收到一只叮咚
TA貢獻(xiàn)1821條經(jīng)驗(yàn) 獲得超5個贊
根據(jù)文檔:
返回值使用通用格式說明符(“G”)進(jìn)行格式化。也就是說,如果 FlagsAttribute 未應(yīng)用于此枚舉類型并且存在等于此實(shí)例的值的命名常量,則返回值是包含常量名稱的字符串。如果應(yīng)用 FlagsAttribute 并且存在一個或多個等于此實(shí)例的值的命名常量的組合,則返回值是一個字符串,其中包含以分隔符分隔的常量名稱列表。
如果沒有MyOrder
,它就會執(zhí)行分隔符分隔的名稱列表 - 這似乎就是您想要的。
但是,?MyOrder
現(xiàn)在MyOrder
是一個或多個命名常量(一個常量 vs 四個常量)的最簡單組合 - 所以它會輸出MyOrder
。
- 1 回答
- 0 關(guān)注
- 119 瀏覽
添加回答
舉報
0/150
提交
取消