gpt4 book ai didi

c# - 我制作了一个数组列表,但效果不佳

转载 作者:太空宇宙 更新时间:2023-11-03 19:54:53 25 4
gpt4 key购买 nike

        List<int[]> LST = new List<int[]>();        
int[] ARY = new int[2];
Random RND = new Random();
for( int i = 0 ; i < 2 ; i++ )
{
ARY[0] = RND.Next( 100, 999 );
ARY[1] = RND.Next( 100, 999 );
LST.Add( ARY );
MessageBox.Show(
LST.Count.ToString() + "\n" +
LST[i][0].ToString() + ", " +
LST[i][1].ToString());
}
foreach ( var x in LST )
MessageBox.Show(
x[0].ToString() + " ," +
x[1].ToString() );

嗨..专家!!

我想拥有;

 Foo, Boo
Poo, Voo

但是,我得到了;

 Poo, Voo
Poo, Voo

在中间点检查,两者看起来都不错。但是,在最后阶段,我得到了扁平化列表(最后一个重复)。有什么好的解释吗?问候(是的,我发现如果我在 for 循环中移动 ARY 声明,结果会很好。我想知道为什么..)

最佳答案

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

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

你可以通过在循环中移动这一行来解决这个问题:

int[] ARY = new int[2]; 

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

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

或者甚至更好,在第二次迭代中,在执行 ARY[0] = RND.Next( 100, 999 ); 之后检查 LST[0] 的值但在执行 ARY[1] = RND.Next( 100, 999 ); 之前。

关于c# - 我制作了一个数组列表,但效果不佳,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34802323/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com