Не может сделать массив в C#

Я пытаюсь сделать динамический массив в 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.

Удачи.

6
задан Josh 22 March 2010 в 20:09
поделиться

5 ответов

Вы не создали массив - вы объявили переменную, но не присвоили ей значение.

Обратите внимание, что массивы всегда имеют фиксированный размер. Если вам нужна структура данных, которую вы можете просто добавлять, вы должны использовать 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);
    }
}

... но имейте в виду, что массивы считаются несколько вредными .

25
ответ дан 8 December 2019 в 03:52
поделиться

Вы должны инициализировать массив. Если вам нужно что-то динамическое, вам нужно использовать объект List.

1
ответ дан 8 December 2019 в 03:52
поделиться

Похоже, вам нужно инициализировать dataArray.

Используйте int [] dataArray = new int [10] вместо кода, который у вас есть в первой строке метода.

где 10 - это количество элементов, с которыми вы будете иметь дело.

Если вы не уверены в размере, вам лучше использовать ArrayList или, еще лучше, список.

1
ответ дан 8 December 2019 в 03:52
поделиться
    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);
    }
0
ответ дан 8 December 2019 в 03:52
поделиться

Попробуйте следующее:

        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);
        } 
0
ответ дан 8 December 2019 в 03:52
поделиться
Другие вопросы по тегам:

Похожие вопросы: