我不记得下面的例子怎么做了。我忘了X(
所以如果SEASON系列有四个元素,{春,夏,秋,冬}
您可以通过......直接访问这些元素。
SEASON.spring或, SEASON.summer ......等等。
你也可以同时在下面做例子
季[1] 季节[2]等等......
SEASON不是一个班级。这是某种变量。
我会感谢您提供的任何指南:D
答案 0 :(得分:2)
如果他们总是在同一个位置,你可以这样做:
enum Seasons {Spring, Summer, Fall, Winter};
通过以下方式访问其中一个季节的示例:
SeasonsArray[(int)Seasons.Spring]
答案 1 :(得分:2)
您可以使用enum
作为数组索引(因此它仍然是一个数字,并且您明确指定从0到3的枚举值),或者使用Dictionary
而不是{ {1}}。
然后,您将使用密钥访问您的数据:
array
答案 2 :(得分:2)
如果你想要这个功能并且想要避免强制转换,你可以为它编写自己的类。我希望能够在我正在处理的项目中使用enum
轻松索引数组,因此我编写了一个简单的类来执行此操作:
public class ArrayEnumIndex<TEnum, TElement> : IEnumerable<TElement>
where TEnum : struct, IConvertible
{
public int Length { get; }
public TElement this[TEnum index] { get; set; }
public void Clear();
public void CopyTo(Array array, int index);
public bool Exists(Predicate<TElement> match);
public TEnum? FindIndex(Predicate<TElement> match);
public IEnumerable<TEnum> FindAllIndices(Predicate<TElement> match);
public IEnumerator<TElement> GetEnumerator();
}
您可以使用普通数组执行此操作,但我发现它更干净。因此,对于季节enum
,您可以这样使用它:
ArrayEnumIndex<Seasons, int> seasons = new ArrayEnumIndex<Seasons, int>();
seasons[Seasons.Winter] = 0;
有一些缺点。您不能将泛型类型参数约束为enum
(没有一些技巧),因此此类会执行一些运行时检查。它适用于基础类型为int
且基于零的顺序值的枚举。