【发布时间】:2014-02-14 21:02:18
【问题描述】:
我需要的是一个类似数组的东西,但让我可以随时将一个元素分配给任何索引,并检查是否已经有一个值分配给特定索引,类似于
MyArray<string> a = new MyArray<string>();
a[10] = "ten";
bool isTheFifthElementDefined = a[5] != null; // false
也许Dictionary<int, string> 及其ContainsKey 方法可以做到,但如果我想要一个仅包含数字键的有序集合,难道没有更合适的数据结构吗?
我还需要遍历定义的元素(最好使用 foreach 或 linq)访问当前元素的值和键。
【问题讨论】:
-
你不会得到任何开箱即用的东西,但我在我的一个名为
DynamicArray的项目中创建了类似的东西,这可能对你有用。基本上,它实现了您正在寻找的隐喻:能够在数组中的特定索引处分配一个值,而不管数组(当前)是否真的那么大。 -
ArrayList 也可以使用。
-
SortedDictionary<int,string>?当你说“只有数字键的有序集合”时,你到底想要什么?
-
Perhaps Dictionary<int, string> with its ContainsKey method could do, but isn't there a more appropriate data structure if I want an ordered collection with numeric keys only?- 没有。 -
@Superbest:嗯,实际上,
Dictionary<int,string>没有排序,枚举键可能以任何顺序返回。因此,SortedDictionary<int,string>在技术上更合适。
标签: c# .net collections types