【问题标题】:Is there a way to add a number of elements to the array in C#?有没有办法在 C# 中向数组中添加一些元素?
【发布时间】:2020-10-09 14:23:06
【问题描述】:

我正在学习 C#,并且我创建了一个代码来使用 for 循环将随机数添加到 List

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();       
    }      
}

我想知道有没有办法用类似的方法将随机数添加到数组

【问题讨论】:

  • 不,不是。数组有固定的长度,不能改变。您需要复制带有n 更多插槽的数组并填充这n 个插槽。 Which is what a List does

标签: c# arrays list for-loop


【解决方案1】:

数组的大小在创建时是固定的,所以不能添加到数组中;但是,您可以:创建一个更大的新数组,复制旧数据,然后附加新值-Array.Resize 执行前两个步骤-但是:这非常昂贵,这就是您通常使用的原因List&lt;T&gt; 或类似的情况。 List&lt;T&gt; 在后台维护一个 oversized 数组,因此它只需要调整大小并复制底层数组偶尔(本质上,它每次装满时大小都会翻倍,因此由于增长,您会得到近似于O(Log2(N)) 的开销)。

【讨论】:

    【解决方案2】:

    您可以直接分配给相关索引,但请注意,您必须将数组初始化为所需的大小(而不是可以动态增长的 List):

    int[] randomNum = new int[10];
    for (int i = 0; i < randomNum.Length; i++)
    {
        randomNum[i] = numberGen.Next(1, 100);
    }
    

    【讨论】:

      【解决方案3】:

      使用List&lt;T&gt;,这正是它专门设计的场景。向其中添加元素后,如果需要数组,只需调用 ToArray():

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-09-03
        • 1970-01-01
        相关资源
        最近更新 更多