增强C#Enum以使用Bitwise操作?

Roy*_*mir 1 .net c# enums .net-4.0

二进制操作非常有用.这样我就可以 | ^ &按顺序发出新的序列.

但是,有时会有一些Enum没有base 2附加值的值(或者根本没有值).

即:

在此输入图像描述

我想Enhance || derive|| attach重视每个条目的Enum(如果可能).

所以我将能够做到:

if (MyListItemType== Header |Footer ) ...
Run Code Online (Sandbox Code Playgroud)

可能吗 ?或者是否有任何棘手的工作?

Hen*_*man 8

我想加强|| 获得|| 将值附加到枚举(如果可能)到每个条目.

你不能这样做(没有重新定义枚举).但是当它在代码中你没有拥有时,就结束了.已经存在依赖于编号的代码,更改int值会破坏该代码.

但这通常意味着Enum并不是一个有点集,所以试图将它作为一个可能并不是一个好主意.

这是代码创建者的设计决策.

看看你的示例列表:

var item = ListItemType.Header | ListItemType.Footer | ListItemType.SelectedItem;
Run Code Online (Sandbox Code Playgroud)

可以同时item真的是标题,页脚和选定的项目吗?这是一个互斥选项列表.

  • +1 表示...“*项目真的可以同时是页眉、页脚和所选项目吗?这是一个互斥选项的列表。*” (2认同)

Joh*_*ner 5

你想使用标志枚举:

[Flags]
enum Days2
{
    None = 0x0,
    Sunday = 0x1,
    Monday = 0x2,
    Tuesday = 0x4,
    Wednesday = 0x8,
    Thursday = 0x10,
    Friday = 0x20,
    Saturday = 0x40
}
class MyClass
{
    Days2 meetingDays = Days2.Tuesday | Days2.Thursday;
}
Run Code Online (Sandbox Code Playgroud)

  • 我无法控制枚举!它里面有一个dll (3认同)