从数组中删除重复项时出现超出范围异常

Out of Range exception when removing duplicates from Array

我创建了一个由 36 个 1-49 之间的随机数组成的数组。我在 for 循环内嵌套了一个 do-while 循环,它将数字插入数组以删除任何重复的数字。当 运行 要测试的代码出现异常时 "System.IndexOutOfRangeException: 'Index was outside the bounds of the array.'"

{
            Random rand = new Random();

            int[] Numbers = new int[36];
            
            for (int r = 0; r <= 36; r++)
            {
                int nextValue;
                do
                {
                    nextValue = rand.Next(1, 50);
                } while (Numbers.Contains(nextValue));

                Numbers[r] = nextValue;
            }

            return Numbers;

        }

Numbers[r] = nextValue; 导致异常。

有谁知道我错在哪里?

你用 36 个空格初始化你的数字数组

Numbers = new int[36];

但是在你的循环中,你分配给数字的位置最多为 49

 for (int r = 0; r <= 49; r++)
.....
Numbers[r] = nextValue;

你的循环最大值应该改为36,它与你要求的随机生成的最大值无关