Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.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#_List - Fatal编程技术网

C# 我列出了一个数组,它工作不好

C# 我列出了一个数组,它工作不好,c#,list,C#,List,但是,我得到了 Foo, Boo Poo, Voo 在中间点检查时,它们看起来都不错。 但是,在最后一个阶段,我得到了一个平坦的列表,最后一个重复。 有什么好的解释吗? 当做 是的,我发现如果我在for循环中移动ari声明,结果会很好。我想知道为什么..认为您从未重新初始化数组,因此会一次又一次地覆盖内存中相同的两个位置。跟踪程序,您应该很容易看到这一点。考虑到您从未重新初始化数组,因此会一次又一次地覆盖内存中的相同两个位置。跟踪程序,您应该会很容易看到这一点。您创建了一次数组,然后更改了

但是,我得到了

 Foo, Boo
 Poo, Voo
在中间点检查时,它们看起来都不错。 但是,在最后一个阶段,我得到了一个平坦的列表,最后一个重复。 有什么好的解释吗? 当做
是的,我发现如果我在for循环中移动ari声明,结果会很好。我想知道为什么..

认为您从未重新初始化数组,因此会一次又一次地覆盖内存中相同的两个位置。跟踪程序,您应该很容易看到这一点。

考虑到您从未重新初始化数组,因此会一次又一次地覆盖内存中的相同两个位置。跟踪程序,您应该会很容易看到这一点。

您创建了一次数组,然后更改了它的内容并多次将其添加到列表中

请注意,列表可以有两个指向同一对象的项。这就是你的情况。LST列表有两个指向同一数组的项

您可以通过在循环内移动这条线来解决此问题:

 Poo, Voo
 Poo, Voo

在中点检查时,消息框将显示您刚才设置的数组的当前值

要清楚地看到这一点,请在调用MessageBox.Show之前,在循环的第二次迭代中检查LST[0]的值。。。。它将显示新值,而不是旧值


或者更好的是,在第二次迭代中,在执行ARY[0]=RND之后检查LST[0]的值;但在执行ARY[1]=RND.Next 100999;之前

创建一次数组,然后更改其内容并多次将其添加到列表中

请注意,列表可以有两个指向同一对象的项。这就是你的情况。LST列表有两个指向同一数组的项

您可以通过在循环内移动这条线来解决此问题:

 Poo, Voo
 Poo, Voo

在中点检查时,消息框将显示您刚才设置的数组的当前值

要清楚地看到这一点,请在调用MessageBox.Show之前,在循环的第二次迭代中检查LST[0]的值。。。。它将显示新值,而不是旧值


或者更好的是,在第二次迭代中,在执行ARY[0]=RND之后检查LST[0]的值;但在执行ARY[1]=RND.Next 100999;之前

谢谢你的回复。但是,中间点检查如何,它显示了正确的过程。到那时你已经填了两次了还是只填了一次?记得第一次没有做任何特别的事情,而第二、第三、第四等都会被覆盖,但你看不到。在中间点检查时,ARY是的,我只有一个ARY,尽管它填充了不同的值对。因此,LST显示了正确的不同对。现在,在最后一个阶段,LST突然变平了。谢谢你的回答。但是,中间点检查如何,它显示了正确的过程。到那时你已经填了两次了还是只填了一次?记得第一次没有做任何特别的事情,而第二、第三、第四等都会被覆盖,但你看不到。在中间点检查时,ARY是的,我只有一个ARY,尽管它填充了不同的值对。因此,LST显示了正确的不同对。现在,在最后一个阶段,LST突然变平了。谢谢你的回答。但是,中点检查如何,它显示正确的LST值,它区分了两者。谢谢。我想,我需要一些时间来重新考虑一下事实上,我已经花了几个小时了,关于这点,这是著名的参考价值对价值的东西?再一次我曾经想,我知道那个,但是,现在,我有了很大的困惑。这样想:一个新的会给你一个对象。由于您使用new once创建数组,因此您只有一个数组。在数组中移动新数组意味着每次循环时都要创建一个新数组。即使是int[]这样的值类型数组也是引用类型。谢谢回复。但是,中点检查如何,它显示正确的LST值,它区分了两者。谢谢。我想,我需要一些时间来重新考虑一下事实上,我已经花了几个小时了,关于这点,这是著名的参考价值对价值的东西?再一次我曾经想,我知道那个,但是,现在,我有了很大的困惑。这样想:一个新的会给你一个对象。由于您使用new once创建数组,因此您只有一个数组。在数组中移动新数组意味着每次通过循环时都要创建一个新数组,甚至像int[]这样的值类型数组也是引用类型。
int[] ARY = new int[2];