如何正确替换数组中的对象 - C#

时间:2011-07-25 21:40:48

标签: c# arrays object replace

我正在尝试从数组中删除一个对象,并使用相同类型的对象填充插槽,但所有属性都使用0。但是当我这样做时,当我重新计算数组值时,由于某种原因,值不会被清除。

以下是我清除对象并在其位置插入空白对象的方法。

    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#并将此项目作为学习经验。任何意见都表示赞赏!

1 个答案:

答案 0 :(得分:1)

为什么不直接将其编入索引:

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

这将改变数组第6个插槽中引用的内容。

我会避免使用名为“blank”的单个引用并将其放入多个数组槽中,除非您知道永远不会修改它们。如果它们是引用类型,则修改其中一个将全部修改它们。