哪种类型是C#中宽松的数字索引列表的最佳类型



我需要的是数组,但让我随时分配一个元素,并检查是否已经分配给特定索引的值大约是

MyArray<string> a = new MyArray<string>();
a[10] = "ten";
bool isTheFifthElementDefined = a[5] != null; // false

也许具有ContainsKey方法的Dictionary<int, string>可以做到,但是如果我只想使用数字键的订购集合,则没有更合适的数据结构?

我还需要通过定义的元素(最好是foreach或linq)访问当前元素的值和关键。

正如您提到的Dictionary似乎更合适的。您所有元素的默认临时值。

List<string> myList = new List<string>(Enumerable.Repeat("",5000));
myList[2300] = "bla bla bla..";

int:

List<int> myList = new List<int>(Enumerable.Repeat(0,5000));

for custom type

List<MyClass> myList = new List<MyClass>(Enumerable.Repeat(new MyClass(), 100));

当然,这不是最好的解决方案...

注意:如果您想要按键的订购集合:

,也可以使用SortedList而不是Dictionary

SortedList<TKey, TValue> :代表一个基于关联的IComparer实现的密钥/值对的集合。

如果您需要键/值对,则不能使用列表,则需要一个字典。实现非常活泼,所以不要太害怕性能(只要您不在其中提出太多价值)。

您可以用

迭代它
foreach(KeyValuePair<int, string> kvp in dict)
{
}

如果您需要订购,则可以使用列表:

List<int> ordered = new List(dict.Keys);
ordered.Sort();
foreach(int key in ordered)
{
}

相关内容

  • 没有找到相关文章

最新更新