增加List <int>的索引值

时间:2016-11-26 04:54:04

标签: c#

我试图在List索引中添加一个值。我只想增加索引的当前值,但此代码段会显示错误。

Random random = new Random();

            int[] intArray = new int[10];
            List<int> intList = new List<int>();

            for (int i = 0; i < 10; i++)
            {
                int randomNumber = random.Next(1, 10);

                intArray[randomNumber] = intArray[randomNumber] + randomNumber;

                // The next line does not add the value of the random number to the List(randomNumber)
                //System.ArgumentOutOfRangeException was unhandled

                intList.Insert(randomNumber, intList[randomNumber]+randomNumber);
            }

使用int []有效。

3 个答案:

答案 0 :(得分:0)

因为数组中没有随机数的元素,

intList[randomNumber]

假设随机数是4,当它第一次执行时,它将检查索引4,它没有元素。

索引也从0开始,改变你的代码如下,

intList.Insert(i, randomNumber);

答案 1 :(得分:0)

不幸的是,您无法从当前列表长度之外的索引插入。并且你得到ArgumentOutOfRange例外。

一种方法是首先初始化列表。 (使用linq)

List<int> intList = new List<int>(Enumerable.Repeat(0, 10) /*repeat zero 10 times.*/); 

答案 2 :(得分:0)

您正在创建一个包含十个整数的数组,以及一个整数列表。因此,列表开始为空,您永远不会.Add该列表中的任何内容。当您稍后尝试引用列表中的项时,当然会出现异常。所以你需要.Add列表中的一些项目,或者你只需​​要在列表的构造函数中使用整数数组,所以当创建List时,已经填充了整数数组的元素。

Int32[] intArray = new Int32[10];
List<Int32> intList = new List<Int32>(intArray);