我偶然发现了以下示例代码,但我无法真正理解其背后的行为。我试图在 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); }}}代码的输出是:12GreenBlue5看起来 Blue 获得了 Green+1 的索引,但在索引中只能向上工作,不能向下工作。那么为什么索引是这样工作的呢?
2 回答
桃花长相依
TA贡献1860条经验 获得超8个赞
您的代码有效:
enum Color
{
Red = 0, Green = 3, Blue = 4
}
只是编译器为您填写了一些值。如果您不确定哪些值去哪里,只需每次都手动初始化它们。有时,当枚举足够大时,无论如何您都应该这样做。
猛跑小猪
TA贡献1858条经验 获得超8个赞
我只能推测原因,但索引双向工作没有意义。
想象一下,如果您将最后一个索引覆盖为最大值,并且您将第一个索引设置为 0。这之间的值是什么会不明确,应该增加还是减少?
如果您希望它向下工作,您所要做的就是从较早的索引开始。稍后指定和索引为您提供了使用显式索引的选项,而不必担心弄乱顺序
- 2 回答
- 0 关注
- 251 浏览
添加回答
举报
0/150
提交
取消