我试图在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 []有效。
答案 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);