Я пытаюсь сделать динамический массив в C#, но я получаю раздражающее сообщение об ошибке. Вот мой код:
private void Form1_Load(object sender, EventArgs e)
{
int[] dataArray;
Random random = new Random();
for (int i = 0; i < random.Next(1, 10); i++)
{
dataArray[i] = random.Next(1, 1000);
}
}
И ошибка:
Use of unassigned local variable 'dataArray'
Это просто экранирует моего ума. Я произошел из VB, поэтому понравитесь мне нежный, lol.
Удачи.
Вы не создали массив - вы объявили переменную, но не присвоили ей значение.
Обратите внимание, что массивы всегда имеют фиксированный размер. Если вам нужна структура данных, которую вы можете просто добавлять, вы должны использовать List
. Однако я бы посоветовал определять размер один раз , а не на каждой итерации цикла. Например:
private void Form1_Load(object sender, EventArgs e)
{
List<T> dataArray = new List<T>();
Random random = new Random();
int size = random.Next(1, 10);
for (int i = 0; i < size; i++)
{
dataArray.Add(random.Next(1, 1000));
}
}
Конечно, если вы заранее рассчитываете размер, вы можете в конце концов использовать массив:
private void Form1_Load(object sender, EventArgs e)
{
Random random = new Random();
int size = random.Next(1, 10);
int[] dataArray = new int[size];
for (int i = 0; i < size; i++)
{
dataArray[i] = random.Next(1, 1000);
}
}
... но имейте в виду, что массивы считаются несколько вредными .
Вы должны инициализировать массив. Если вам нужно что-то динамическое, вам нужно использовать объект List.
Похоже, вам нужно инициализировать dataArray.
Используйте int [] dataArray = new int [10]
вместо кода, который у вас есть в первой строке метода.
где 10 - это количество элементов, с которыми вы будете иметь дело.
Если вы не уверены в размере, вам лучше использовать ArrayList или, еще лучше, список.
int[] dataArray= new int[10];
Random random = new Random();
for (int i = 0; i < random.Next(1, 10); i++)
{
dataArray[i] = random.Next(1, 1000);
}
Попробуйте следующее:
Random random = new Random();
int cnt = random.Next(1, 10);
int[] dataArray = new int[cnt];
for (int i = 0; i < cnt; i++)
{
dataArray[i] = random.Next(1, 1000);
}