我基本上有以下代码:
LinkedList<int>[] listOfNumbers = new LinkedList<int>[6];
int[] someNumbers = new int[6];
for(int index = 0; index < 6; index++)
{
listOfNumbers[index] = new LinkedList<int>();
}
someNumnbers[0] = 0;
someNumnbers[1] = 1;
someNumnbers[2] = 2;
someNumnbers[3] = 3;
someNumnbers[4] = 4;
someNumnbers[5] = 5;
for(int index = 0; index < 6; index++)
{
listOfNumbers[index].AddLast(someNumbers[index]);
}
我希望在最后一个循环的第一次传递后来自Visual Studio中的对象监视工具的以下报告:
listOfNumbers[0] has 1 element with value 0
listOfNumbers[1] has no elements
listOfNumbers[2] has no elements
listOfNumbers[3] has no elements
listOfNumbers[4] has no elements
listOfNumbers[5] has no elements
但我很好奇地发现了这个:
listOfNumbers[0] has 1 element with value 0
listOfNumbers[1] has 1 element with value 0
listOfNumbers[2] has 1 element with value 0
listOfNumbers[3] has 1 element with value 0
listOfNumbers[4] has 1 element with value 0
listOfNumbers[5] has 1 element with value 0
当我运行最后一个循环到完成时,我得到以下内容:
listOfNumbers[0] has 6 element with values 0,1,2,3,4,5
listOfNumbers[1] has 6 element with values 0,1,2,3,4,5
listOfNumbers[2] has 6 element with values 0,1,2,3,4,5
listOfNumbers[3] has 6 element with values 0,1,2,3,4,5
listOfNumbers[4] has 6 element with values 0,1,2,3,4,5
listOfNumbers[5] has 6 element with values 0,1,2,3,4,5
与我期望的结果相比:
listOfNumbers[0] has 1 element with value 0
listOfNumbers[1] has 1 element with value 1
listOfNumbers[2] has 1 element with value 2
listOfNumbers[3] has 1 element with value 3
listOfNumbers[4] has 1 element with value 4
listOfNumbers[5] has 1 element with value 5
我的第一个猜测是我在语法中写了一些不正确的东西,但我似乎无法弄清楚是什么。显然,似乎每次传递都会将AddLast()应用于列表数组中的每个列表,但我不知道为什么。任何帮助将不胜感激。
答案 0 :(得分:0)
我想你正在制作一个LinkedLists数组,而你只想使用LinkedList。
尝试将其初始化为单个LinkedList,然后添加元素。
查看文档中提供的LinkedList<T>
类的使用示例:
http://msdn.microsoft.com/it-it/library/he2s3bh7(v=vs.110).aspx
答案 1 :(得分:0)
您应该尝试使用两个for
循环执行以下操作。外循环用于遍历每个列表,内循环用于填充每个列表。
for(int i=0; i<6;i++)
{
for(int index = 0; index < 6; index++)
{
listOfNumbers[i].AddLast(someNumbers[index]);
}
}
答案 2 :(得分:0)
如果你在每个索引中都有相同的链表实例,如果你实际上正在初始化链表数组,就会发生这种情况,因为你已经证明它不应该是一个问题。同一个实例意味着你将一个链表实例化为一个变量,然后在每个数组索引中分配,这基本上意味着因为它们在内部都是相同的对象,无论你调用addlast方法在哪个对象中,它会反映在数组中的每个项目中。