管理枚举字段

时间:2012-06-23 18:57:37

标签: c# enums

我有enum

public enum Enumeration
{
    A,
    B,
    C
}

采用类型为Enumeration的一个参数的方法:

public void method(Enumeration e)
{
}

我希望method只接受ABC被视为错误的值),但我需要C Enumeration {{1}} 1}}因为其他方法可以接受它作为正确的值。这样做的最佳方式是什么?

3 个答案:

答案 0 :(得分:6)

我不会拒绝只是 C。我会拒绝AB 以外的任何其他值:

if (e != Enumeration.A && e != Enumeration.B)
{
    throw new ArgumentOutOfRangeException("e");
}

这很重要,否则人们可以致电:

Method((Enumeration) -1);

它会通过验证。你总是需要知道枚举实际上只是一组命名整数 - 但是任何正确基础类型的整数都可以强制转换为枚举类型。

答案 1 :(得分:5)

抛出异常:

public void method(Enumeration e)
{
    if (e != Enumeration.A && e != Enumeration.B) {
        throw new ArgumentOutOfRangeException("e");
    }
    // ...
}

如果您使用的是.NET 4.0或更高版本,则可以使用code contracts

答案 2 :(得分:1)

如paulsm4所述,您可以定义:

public enum EnumSubset
{
    A = Enumeration.A,
    B = Enumeration.B,
}

并使用:

public void method(EnumSubset e)
{
}