如何使用Enum和其他选项(全部,无)

时间:2010-02-09 11:25:50

标签: .net enums

我有一个枚举,其中:

  • 作为属性包含在我的课程中
  • 它表示数据库表(几种类型)中的一些值
  • 它显示在DropBox中,因此可以用作过滤器

现在我想在此DropBox中添加“All”(或“None”)值。

我该怎么做:

  • 将“全部”值添加到枚举?
  • 向DropBox添加'All'值,将我的属性类型从Enum更改为String
  • 其他一些选择......

3 个答案:

答案 0 :(得分:6)

Codesleuth对另一个答案的评论使我再次阅读了这个问题,这是一个更新。

如果您要使用多个组合,请考虑使用flags enumeration。在您的情况下,这意味着选择任何类型的组合是有效的输入。

[Flags]
enum MyTypes
{
    None = 0,
    One = 1,
    Two = 2,
    Three = 4,
    Four = 8,
    All = One | Two | Three | Four
}

如果用户只能选择一种类型或所有类型,则使用普通枚举:

enum MyType
{
    None,
    One,
    Two,
    Three,
    Four,
    All
}

答案 1 :(得分:2)

答案 2 :(得分:1)

我还有另外一个技巧,你可以在我的博客上查看:Enum Trick

最佳做法是将无或未知包括为零(0)。

'全部'是计算的,作为所有值的总和。

[Flags]
public enum MyTypes
{
    None = 0,
    One = 1,
    Two = 2,
    Three = 4,
    Four = 8,
    Last,
    All = (Last << 1) - 3,
}

现在,当您添加值时,“全部”也会更新(无需更改)。