Я пытаюсь создать одномерный массив типа 'string', а после добавить в него значение переменной, как итог, возникает ошибка

Возможно я не понял саму логику массивов и из-за этого не могу адекватно с ними работать, из-за чего возникают небольшие трудности. Возможно для вас это покажется слишком очевидно, но я ищу решение этой проблемы уже 3 дня. Воссоздам пример моей попытки добавления переменной в массив:

public double[] PriceList; // массив параметры которого я задаю в Unity
public string[] resultMoney; // массив параметры которого я пытаюсь задать в коде
void Update()
    {
        string resultMoney[0] = { string.Format("{0:f1}", Money) }; // редактирую формат отображения float числа

        MoneyText.text = resultMoney[0] + "$"; // попытка присвоения массива с индексом 0 - тексту
    }

Как итог, Unity не даёт запустить данное приложение (ошибок тоже не выдаёт). Если я сделаю подобное с переменной, то это сработает.


Ответы (3 шт):

Автор решения: Andrew

Если хочется на ходу добавлять элементы - для этого существует вместо массива List<String>. Массивы же созданы для статического неизменного количества элементов.


Судя по коду из вопроса resultMoney не инициализирован в принципе. Его как такового в памяти вообще не существует.

А ты на каждом кадре обращаешся к нулевому элементу несуществующего массива и пытаешься в него записать значение.

Даже более того, ты обращаешся не к глобальному resultMoney, а пытаешься создавать локальный

→ Ссылка
Автор решения: SQDYs

Проблема была решена, нужно было изменить вариант присвоения переменной к массиву.

Из:

public string[] resultMoney;
// ...
string resultMoney[0] = { string.Format("{0:f1}", Money) };

На:

public string[] resultMoney;
// ...
resultMoney[0] = string.Format("{0:f1}", Money);
→ Ссылка
Автор решения: Lesh

Ошибка в том, что ты используешь массив не инициализируя его.

string[] m = new string[3]; //если массив имеет 3 элемента.

→ Ссылка