Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
对于C#中松散的数字索引列表,哪种类型最好?_C#_.net_Collections_Types - Fatal编程技术网

对于C#中松散的数字索引列表,哪种类型最好?

对于C#中松散的数字索引列表,哪种类型最好?,c#,.net,collections,types,C#,.net,Collections,Types,我需要的是类似于数组的东西,但允许我在任何时候将一个元素分配给任何索引,并检查是否已经有一个值分配给特定的索引 MyArray<string> a = new MyArray<string>(); a[10] = "ten"; bool isTheFifthElementDefined = a[5] != null; // false MyArray a=newmyarray(); a[10]=“十”; 布尔是第五个定义的值=a[5]!=空;//假的 也许Dictio

我需要的是类似于数组的东西,但允许我在任何时候将一个元素分配给任何索引,并检查是否已经有一个值分配给特定的索引

MyArray<string> a = new MyArray<string>();
a[10] = "ten";
bool isTheFifthElementDefined = a[5] != null; // false
MyArray a=newmyarray();
a[10]=“十”;
布尔是第五个定义的值=a[5]!=空;//假的
也许
Dictionary
及其
ContainsKey
方法可以做到这一点,但是如果我想要一个只包含数字键的有序集合,难道没有更合适的数据结构吗


我还需要遍历已定义的元素(最好使用foreach或linq)访问当前元素的值和键。

如您所述的
字典似乎更适合于此。但您可以使用泛型列表,例如,创建列表时,可以指定元素计数,也可以为所有元素指定默认的临时值

List<string> myList = new List<string>(Enumerable.Repeat("",5000));
myList[2300] = "bla bla bla..";
对于自定义类型

List<MyClass> myList = new List<MyClass>(Enumerable.Repeat(new MyClass(), 100));
List myList=new List(可枚举.重复(new MyClass(),100));
当然,这不是最好的解决方案

注意:如果您想要按键排序的集合,也可以使用而不是
字典

SortedList
:表示根据相关IComparer实现按键排序的键/值对集合


正如您所提到的
字典
似乎更适合于此。但是您可以使用通用列表,例如,当您创建列表时,您可以指定元素计数,并且可以为所有元素提供默认的临时值

List<string> myList = new List<string>(Enumerable.Repeat("",5000));
myList[2300] = "bla bla bla..";
对于自定义类型:

List<MyClass> myList = new List<MyClass>(Enumerable.Repeat(new MyClass(), 100));
List myList=new List(可枚举.重复(new MyClass(),100));
当然,这不是最好的解决方案

注意:如果您想要按键排序的集合,也可以使用而不是
字典

SortedList
:表示根据相关IComparer实现按键排序的键/值对集合


正如您所提到的
字典
似乎更适合于此。但是您可以使用通用列表,例如,当您创建列表时,您可以指定元素计数,并且可以为所有元素提供默认的临时值

List<string> myList = new List<string>(Enumerable.Repeat("",5000));
myList[2300] = "bla bla bla..";
对于自定义类型:

List<MyClass> myList = new List<MyClass>(Enumerable.Repeat(new MyClass(), 100));
List myList=new List(可枚举.重复(new MyClass(),100));
当然,这不是最好的解决方案

注意:如果您想要按键排序的集合,也可以使用而不是
字典

SortedList
:表示根据相关IComparer实现按键排序的键/值对集合


正如您所提到的
字典
似乎更适合于此。但是您可以使用通用列表,例如,当您创建列表时,您可以指定元素计数,并且可以为所有元素提供默认的临时值

List<string> myList = new List<string>(Enumerable.Repeat("",5000));
myList[2300] = "bla bla bla..";
对于自定义类型:

List<MyClass> myList = new List<MyClass>(Enumerable.Repeat(new MyClass(), 100));
List myList=new List(可枚举.重复(new MyClass(),100));
当然,这不是最好的解决方案

注意:如果您想要按键排序的集合,也可以使用而不是
字典

SortedList
:表示根据相关IComparer实现按键排序的键/值对集合


如果需要键/值对,则不能使用列表,需要字典。 这个实现非常快,所以不要太担心性能(只要你不在其中放太多的值)

您可以使用

foreach(KeyValuePair<int, string> kvp in dict)
{
}
foreach(dict中的KeyValuePair kvp)
{
}
如果您需要订购,可以使用以下列表:

List<int> ordered = new List(dict.Keys);
ordered.Sort();

foreach(int key in ordered)
{
}
List ordered=新列表(dict.Keys);
ordered.Sort();
foreach(按顺序输入int键)
{
}

如果需要键/值对,则不能使用列表,需要字典。 这个实现非常快,所以不要太担心性能(只要你不在其中放太多的值)

您可以使用

foreach(KeyValuePair<int, string> kvp in dict)
{
}
foreach(dict中的KeyValuePair kvp)
{
}
如果您需要订购,可以使用以下列表:

List<int> ordered = new List(dict.Keys);
ordered.Sort();

foreach(int key in ordered)
{
}
List ordered=新列表(dict.Keys);
ordered.Sort();
foreach(按顺序输入int键)
{
}

如果需要键/值对,则不能使用列表,需要字典。 这个实现非常快,所以不要太担心性能(只要你不在其中放太多的值)

您可以使用

foreach(KeyValuePair<int, string> kvp in dict)
{
}
foreach(dict中的KeyValuePair kvp)
{
}
如果您需要订购,可以使用以下列表:

List<int> ordered = new List(dict.Keys);
ordered.Sort();

foreach(int key in ordered)
{
}
List ordered=新列表(dict.Keys);
ordered.Sort();
foreach(按顺序输入int键)
{
}

如果需要键/值对,则不能使用列表,需要字典。 这个实现非常快,所以不要太担心性能(只要你不在其中放太多的值)

您可以使用

foreach(KeyValuePair<int, string> kvp in dict)
{
}
foreach(dict中的KeyValuePair kvp)
{
}
如果您需要订购,可以使用以下列表:

List<int> ordered = new List(dict.Keys);
ordered.Sort();

foreach(int key in ordered)
{
}
List ordered=新列表(dict.Keys);
ordered.Sort();
foreach(按顺序输入int键)
{
}

对于这一点,你不会从盒子里得到任何东西,但我在我的一个项目中创建了类似的东西,名为,可能对你有一些用处。基本上,它实现了您正在寻找的隐喻:能够在数组中的特定索引处赋值,而不管数组(当前)是否真的那么大。也可以使用ArrayList。?当你说“只包含数字键的有序集合”时,你到底想要什么?
也许字典及其ContainsKey方法可以做到,但如果我只需要包含数字键的有序集合,难道没有更合适的数据结构吗?
-不。@Superbest:嗯,实际上,
D