Есть ли способ добавить несколько элементов в массив в C#? - PullRequest
2 голосов
/ 19 июня 2020

Я изучаю C#, и я создал код для добавления случайных чисел в List, используя for l oop.

class Program
{
    static void Main(string[] args)
    {
        Random numberGen = new Random();
        List<int> randomNum = new List<int>();
        for (int i = 0; i < 10; i++)
        {
            randomNum.Add(numberGen.Next(1, 100));
        }
        for (int i = 0; i < randomNum.Count; i++)
        {
            Console.WriteLine(randomNum[i]);
        }       
        Console.ReadKey();       
    }      
}

Я хочу знать, есть ли это способ добавить случайные числа в массив аналогичным методом?

Ответы [ 3 ]

5 голосов
/ 19 июня 2020

Размер массива фиксирован во время создания, поэтому вы не можете добавить в массив; однако вы можете: создать новый массив большего размера, скопировать старые данные, а затем добавить новое значение (я) - Array.Resize выполняет первые два шага - но: это довольно дорого, поэтому вы обычно используете a List<T> или аналогичный для этого сценария. A List<T> поддерживает массив негабаритного в фоновом режиме, поэтому ему нужно только изменять размер и копировать базовый массив иногда (по сути, он удваивает размер каждый раз, когда он заполняется, вы получаете примерно O(Log2(N)) накладные расходы из-за роста).

1 голос
/ 19 июня 2020

Вы можете просто назначить соответствующий индекс напрямую, но обратите внимание, что вам придется инициализировать массив до требуемого размера (в отличие от List, который может расти динамически):

int[] randomNum = new int[10];
for (int i = 0; i < randomNum.Length; i++)
{
    randomNum[i] = numberGen.Next(1, 100);
}
0 голосов
/ 19 июня 2020

Используйте List<T>, это тот сценарий, для которого он был разработан. После того, как вы закончили добавлять к нему элементы, если вам нужен массив, просто вызовите ToArray():

var myList = new List<int>();
//add random number of random numbers
var myArray = myList.ToArray();
...