2016-08-23 46 views
-1

我的代碼的邊界之外System.IndexOutOfRangeException:索引是數組c#

public bool Add(ConquerItem item) 
{ 
    if (objects.Length < item.Position) 
     return false; 

    if (objects[item.Position - 1] == null) 
    { 
     item.IsWorn = true; 
     UpdateItemview(item); 
     objects[item.Position - 1] = item; 
     item.Position = item.Position; 
     item.Send(Owner); 

     Owner.LoadItemStats(); 
     Owner.SendScreenSpawn(Owner.Entity, false); 

     return true; 
    } 
    else return false; 
} 

錯誤說

System.IndexOutOfRangeException:指數是 陣列的邊界之外

+0

這個錯誤發生在哪裏?你調試過代碼嗎? –

+0

當我嘗試在遊戲中添加項目時,我在控制檯中出現此錯誤 –

+0

如果您在單步調試中調試,您將在特定行中得到它,請嘗試。 –

回答

1

你可以試試下面的代碼

public bool Add(ConquerItem item) 
{ 
    if (objects.Length < item.Position || item.Position - 1 < 0 || objects[item.Position - 1] == null) 
     return false; 

    item.IsWorn = true; 
    UpdateItemview(item); 
    objects[item.Position - 1] = item; 
    item.Position = item.Position; 
    item.Send(Owner); 

    Owner.LoadItemStats(); 
    Owner.SendScreenSpawn(Owner.Entity, false); 
    return true; 
} 

首先,最有可能的是前者當您嘗試objects[item.Position -1] == null時發生了ception,這是因爲item.Position本可能是0:p 這會導致值變爲-1,因此超出範圍。

4

不能告訴你從哪裏帶來objectsitem,但是當您訪問集合時會發生此錯誤有一個不存在的索引。

我的猜測是:

  1. item.Position0
  2. 集合爲空

然後,它會通過if聲明(因爲位置不大於長度刨絲器)和您將收到:

   0 - 1  
objects[item.Position - 1] ==> objects[-1] 

這將引發IndexOutOfRange

更改if聲明:

if (objects.Length < item.Position || item.Position - 1 < 0) 
    return false; 

另外你最後一行(else return false;)的else是多餘的,你可以只寫return false;

+0

如果'objects.Length

+0

請問你可以用你的添加編輯我的代碼嗎? @Gilad Green –

+0

你的意思是我必須在最後一行刪除'else'嗎? –

1

此錯誤,當你試圖在它沒有價值的位置來訪問或指定一個索引,例如

string[] data = new string[2]; 
data[0] = "1"; 

string firstdata = data[-1];// 

發生,這是最有可能發生的事情給你。您item.Position是returnning 0,會通過1這是-1所以它試圖 做這樣的事情

objects[item.Position - 1] = item; 

成爲

objects[0 - 1] = item; 

成爲

objects[-1] = item; 
減去

哪些不存在並且超出索引的範圍就像您的錯誤

+0

這就是關鍵所在! –

+0

@GiladGreen我確實讀過它是錯誤的... XD – Neil

+0

@GiladGreen在理解爲什麼對象會保持其索引值並與我的想法產生衝突 – Neil

相關問題