2011-07-25 24 views
1

我想從數組中刪除一個對象,並填充相同類型的對象,但與所有屬性爲0的插槽。但是,當我這樣做時,值重新計算數組值時出於某種原因不清除。如何正確替換數組中的對象C#

下面是我如何清除對象並在其位置插入空白對象。

public void clearOutBox(int arraySlot) 
    { 
     itemsInbuildArray.Remove(itemsArray[arraySlot]); 
     itemsInbuildArray.Insert(arraySlot, blank); 
     itemInBuildPictureArray[arraySlot].ImageLocation = null; 
     statCalculation(); 
    } 

    //one of the lines from the statCalculation method. 
    statsHealth.Text = (Convert.ToString(itemsInbuildArray.Sum(hp => hp.Health))); 

     public partial class Form1 : Form 
{ 
    List<Item> itemsArray = new List<Item>(); 
    List<PictureBox> itemInBuildPictureArray = new List<PictureBox>(); 
    List<ToolTip> itemInBuildTooltipArray = new List<ToolTip>(); 
    List<Item> itemsInbuildArray = new List<Item>(); 
      Item blank = new Item(); // this is one of several objects created here 
} 

我初始化它這些空白的項目6陣列,也沒有問題,只需更換一個空白項與值,但刪除它是什麼造成了我的問題。

請原諒,我正在做這件事的可能性很高,我只是啓動C#並將此項目作爲一種學習體驗。任何輸入是讚賞!

+2

爲什麼不只是'itemsInbuildArray [arraySlot] = blank'? –

+0

這個「空白」對象來自哪裏(代碼中的第4行),以及如何創建它? – Svilen

+0

您需要提供更多信息 - 您似乎有3個像對象一樣的數組 - 其中至少有一個itemsInbuildArray實際上是ArrayList而不是Array。 – iandotkelly

回答

1

爲什麼不直接指標是:

int index = 5; 
array[index] = new Foobar(); // whatever your class is 

這將改變無論是在數組中的第6插槽引用。

我會避免使用稱爲「空白」的單個引用並將其放入多個陣列插槽,除非您知道您永遠不會修改它們。如果它們是引用類型,那麼修改其中的一個將會修改它們。

+0

空白只是一個對象的名稱。它們都必須是空白的,因爲這些值是在每個項目被輸入時計算的,並且如果沒有東西在那裏崩潰 – Mike

+0

這解決了我的問題!我想我只是過於複雜了,謝謝。 – Mike