我正在使用枚举,当我遇到枚举的 [Flags] 时,我正在寻找一种将一系列枚举值分组到不同组的方法。
我注意到 ms-Docs 上的示例正在打印本地声明的枚举按位范围的数组(作为枚举名称),但当我在枚举本身中声明相同的范围时却没有。
我已经测试过Enum.HasFlag(),它执行相同的计算,但它不会以相同的方式打印它。我已经找到了很多标志迭代器的解决方案,但似乎该功能已经存在于本地声明的变量中。
枚举声明值和本地声明的枚举有什么区别?
[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 时的代码相同:主菜、开胃菜、甜点、饮料包括配菜:False
收到一只叮咚
相关分类