迭代C#中的枚举值

san*_*p22 8 c# enumeration

可能重复:
如何枚举枚举?

假设我有一个这样的枚举:

public enum Cars
{
    Audi = 0,
    BMW,
    Opel,
    Renault,
    Fiat,
    Citroen,
    AlfaRomeo,
}
Run Code Online (Sandbox Code Playgroud)

我有机会在欧宝和雪铁龙之间进行迭代吗?我想将这些值作为方法的参数.

Han*_*ing 13

这将有效:

for(Cars car=Cars.Opel; car<=Cars.Citroen; car++)
{
  Console.WriteLine(car);
}
Run Code Online (Sandbox Code Playgroud)

但您必须确保起始值小于结束值.

编辑
如果您没有硬编码开始和结束,但提供它们作为参数,您需要以正确的顺序使用它们.如果您只是切换"欧宝"和"雪铁龙",您将无法获得输出.

另外(如评论中所述)基础整数值不得包含间隙或重叠.幸运的是,如果你自己没有指定值(即使不需要'= 0'),这也是默认行为.请参阅MSDN:

如果未指定枚举器列表中元素的值,则值将自动递增1.

  • 这取决于你知道"Enum"的最小值和最大值,并且它还假设枚举形成一个连续的整数范围.从我这里下来.如果范围不连续,它就不起作用(想想`enum Foo {A = 1,B = 17}`). (4认同)