假设我有以下枚举类型:
private enum ranks { ace = "Ace", two = "2", three = "3", four = "4", five = "5", six = "6", seven = "7",
eight = "8", nine = "9", ten = "10", jack = "Jack", queen = "Queen", king = "King" }
ranks rank;
我知道我可以做像 sizeof(ranks) 这样的事情,但是有没有办法获得排名中的第 n 个项目?假设用户输入 4,我想在不明确执行的情况下将排名设置为第 4 个枚举:
rank = ranks.four;
我该怎么做?
(为了这个例子的目的,假设我必须使用枚举并且我知道还有其他集合更适合这个问题。)
感谢您的帮助。 :)
最佳答案
(1) 命名约定:不要将枚举的名称复数化,除非它是一组可以一起或运算的“位标志”。
(2) 在枚举中总是有一个值为零的项目。枚举的默认初始化将赋予它零值,因此最好为其指定一个明确的名称(例如 None)。
(3) 您可以将任何您喜欢的值转换为枚举,前提是它与枚举的基础类型相同(默认为 int32)。
所以你可以有一个看起来像这样的枚举:
枚举排名 { 没有任何, 高手, 二, ...
并且要将排名值(例如 5)转换为枚举,您可以强制转换:
排名rank = (Rank)5;
但是您最好编写一个方法来执行此操作,以便在转换之前检查范围,如果超出范围则抛出异常。
关于c# - 等同于 C# 中枚举类型的索引?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10750856/