2016-11-26 36 views
0

我試圖向List索引添加一個值。我想只增加索引的當前值,但是這個片段顯示了錯誤。遞增列表的索引值<int>

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

因爲有數組爲您隨機數中沒有元素,

intList[randomNumber] 

假設隨機數是4,當它得到執行第一次,它會檢查該指數4,它不具有元件。

而且該指數從0開始,改變你的代碼如下圖所示,

intList.Insert(i, randomNumber); 
0

不幸的是,你不能從超越現有列表長度指標插入。你會得到ArgumentOutOfRange異常。

一種方法是首先初始化您的列表。 (使用LINQ)

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

您正在創建十個整數數組和整數的列表。所以這個列表開始是空的,你從來沒有任何東西到這個列表。當您稍後嘗試引用列表中的項目時,當然會發生異常。因此,您需要將.Add某些項目添加到列表中,或者您可以在列表的構造函數中使用整數數組,因此創建List時將已經填充整數數組的元素。

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