C# 枚举索引行为

我偶然发现了以下示例代码,但我无法真正理解其背后的行为。我试图在 C# 文档中找到解释,但没有成功。


enum Color { Red, Green = 3, Blue }

public class Program

{

    public static void Main(string[] args)

    {

        Console.WriteLine((Color) 1);

        Console.WriteLine((Color) 2);

        Console.WriteLine((Color) 3);

        Console.WriteLine((Color) 4);

        Console.WriteLine((Color) 5);   

   }

}}

代码的输出是:


1

2

Green

Blue

5

看起来 Blue 获得了 Green+1 的索引,但在索引中只能向上工作,不能向下工作。那么为什么索引是这样工作的呢?


PIPIONE
浏览 313回答 2
2回答

桃花长相依

您的代码有效:enum Color {    Red = 0, Green = 3, Blue = 4 }只是编译器为您填写了一些值。如果您不确定哪些值去哪里,只需每次都手动初始化它们。有时,当枚举足够大时,无论如何您都应该这样做。

猛跑小猪

我只能推测原因,但索引双向工作没有意义。想象一下,如果您将最后一个索引覆盖为最大值,并且您将第一个索引设置为 0。这之间的值是什么会不明确,应该增加还是减少?如果您希望它向下工作,您所要做的就是从较早的索引开始。稍后指定和索引为您提供了使用显式索引的选项,而不必担心弄乱顺序
打开App,查看更多内容
随时随地看视频慕课网APP