c# - 枚举需要索引吗?

标签 c# enums

我有许多枚举,其中包含不时更改的长列表

public MyEnumType MyEnum
{
    None = 0,
    Option1 = 1,
    Option2 = 2,
    etc..
}

当它们发生变化时,我需要对索引重新编号,因为新选项总是置于现有选项之间。

问题是,如果我删除索引,枚举是否始终遵循从上到下的顺序?

public MyEnumType MyEnum
{
    None,
    Option1,
    Option2,
    etc..
}

提前致谢。

最佳答案

是的,他们会的。 如果您想确保值以某个特定值开始,您也可以仅指定第一个元素:

public MyEnumType MyEnum
{
    None = 1,
    Option1, // -> 2
    Option2, // -> 3
}

有关其他详细信息,请查看 the docs .

请注意,在大多数情况下,您的代码不应该关心确切的数值。 当你关心的情况是例如。如果您声明一个枚举,它是外部类型(例如互操作)的别名,那么您需要确保值是相同的。另一种情况是当枚举表示二进制标志时,您需要这样的东西:

[Flags] 
public MyEnumType MyEnum
{
    None = 1,
    Option1 = 2,
    Option2 = 4
}

关于c# - 枚举需要索引吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16913751/

相关文章:

dart - 如何使用 Dart 增强型枚举应用状态模式

c# - 使用 IEnumerable 与 ICollection 与 IList 的自定义集合

swift - 通用枚举函数参数?

c# - 枚举结构?行为类似于枚举的值对象

swift - 我如何在 Swift 4 中测试具有关联值的枚举案例的等效性

java - Java 中枚举和基于枚举的类实现之间的优缺点是什么?

c# - 创建未知类型对象的实例并 TryUpdateModel

c# - 如何表示可能无法设置的数据

c# - Azure Function 静态构造函数错误日志记录

c# - 如何合并或注入(inject)字符串中的 "@"字符,包括转义字符,而无需在 C# 中从头开始定义字符串变量