【发布时间】:2009-02-21 23:07:37
【问题描述】:
我有一个多维数组。
int[][][] MyValues;
我想要的是通过强类型等效项(例如枚举)访问索引。我知道您可以从 Enum 类型中获取枚举值,但我的口味有点啰嗦。
我宁愿有办法强输入索引。
例如:
int CarNumber = MyValues[Racetrack.Daytona][Race.Daytona500][Driver.JGordon];
由于它类似于枚举,这将防止抛出任何越界异常,而且它为所有索引赋予了人类可读的良好含义。
我已经使用字典方法实现了这一点,但它似乎有点笨拙:
Dictionary<Racetrack,Dictionary<Race,<Dictionary<Driver,int>>> =
new Dictionary<Racetrack,Dictionary<Race,<Dictionary<Driver,int>>>();
然后我可以通过枚举访问它,但我不太喜欢这种方法。看起来很“丑”。
我正在寻找一些替代方法来表示本质上是一个多维数组,同时使用人类可读的索引器,同时保持类型安全(例如,不能意外地使用驱动程序进行比赛,所以简单地使用 consts 不是一个好方法)。
有什么建议吗?
这将是一个编译时数组(上面的例子不是真实的,只是一个说明)所以我不必担心数组的插入或删除或其他操作。它将在值、大小和布局上保持不变。
使用带有 const 值的静态类也不是一个好方法,因为它并不强制只能将定义的值集作为索引器传递。
【问题讨论】:
标签: c# data-structures collections