c#退出循环后所有列表项都会重置,

c#退出循环后所有列表项都会重置,,c#,arrays,list,C#,Arrays,List,我有一个9,9矩阵,我想检查哪里有0,如果我找到一个0,我会创建一个11大小的数组,其中包含0(i和j)和1-9数字的位置 这将被添加到列表中,它将找到下一个0 add和soo on public static void CheckandCreate() { int[] sector = new int[11]; //setting the array to 1-9 for (int i = 2; i < sector.Le

我有一个9,9矩阵,我想检查哪里有0,如果我找到一个0,我会创建一个11大小的数组,其中包含0(i和j)和1-9数字的位置 这将被添加到列表中,它将找到下一个0 add和soo on

    public static void CheckandCreate()
    {
        int[] sector = new int[11];
        //setting the array to  1-9
        for (int i = 2; i < sector.Length; i++)
        {
            sector[i] = i - 1;
        }
        //looking for 0
        for (int i = 0; i < suduku.GetLength(0); i++)
        {
            for (int j = 0; j < suduku.GetLength(1); j++)
            {
                //finding 0
                if (suduku[i, j] == 0)
                {
                    sector[0] = i;
                    sector[1] = j;
                    sectorlist.Add(sector);
                    Console.WriteLine("Found Empty on " + i + " " + j);
                    //check to see array
                    sectorprinter(sector);
                    //check to if the array is on list and also print from list(check)
                    sectorprinter(sectorlist[sectorlist.IndexOf(sector)]);
                }
            }
            //check to see if its still keeps the same value as before,this is where it failes!
            Console.WriteLine();
            sectorprinter(sectorlist[3]);
            Console.WriteLine();
        }
        Console.WriteLine(sectorlist.Capacity);
        Console.WriteLine();
    }
出什么事了

执行此操作时:

sectorlist.Add(sector);
它添加了对
扇区
数组的引用,而不是数组的副本。由于您随后修改了该数组,它还将修改您添加到
扇区列表中的数组,因为它们是相同的数组

要解决此问题,请复制阵列并将副本添加到
扇区列表中

sectorlist.Add(sector.ToArray());
我并不是说你的代码在修改后会正常工作,但它至少会修复那个特定的bug

除此之外,我建议在调试器中单步执行代码。

执行此操作时:

sectorlist.Add(sector);
它添加了对
扇区
数组的引用,而不是数组的副本。由于您随后修改了该数组,它还将修改您添加到
扇区列表中的数组,因为它们是相同的数组

要解决此问题,请复制阵列并将副本添加到
扇区列表中

sectorlist.Add(sector.ToArray());
我并不是说你的代码在修改后会正常工作,但它至少会修复那个特定的bug


除此之外,我建议在调试器中单步执行代码。

您是否尝试过在调试器中单步执行代码?至少描述一下您已经探索过的所有方法,以及为什么在那次真诚的努力之后,您仍然感到困惑。您是否尝试过在调试器中单步执行代码?至少描述一下您已经探索过的所有途径,以及为什么在那次真诚的努力之后,您仍然感到困惑。