Как правильно заменить объекты в массиве - C # - PullRequest
1 голос
/ 26 июля 2011

Я пытаюсь удалить объект из массива и заполнить слот объектом того же типа, но с 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 Ответ

1 голос
/ 26 июля 2011

Почему бы просто не проиндексировать его напрямую:

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

Это изменит все, на что ссылается шестой слот в вашем массиве.

Я бы не использовал одну ссылку под названием "пусто "и помещать его в несколько слотов массива, если вы не знаете, что никогда не измените их.Если они являются ссылочными типами, то изменение одного из них приведет к их изменению.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...