有没有办法在 C# 中向数组中添加一些元素?

Posted

技术标签:

【中文标题】有没有办法在 C# 中向数组中添加一些元素?【英文标题】:Is there a way to add a number of elements to the array in 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 【参考方案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();

【讨论】:

以上是关于有没有办法在 C# 中向数组中添加一些元素?的主要内容,如果未能解决你的问题,请参考以下文章

是否可以在 numpy 数组中添加不同长度的行,然后在 python 中向该行添加元素?

如何在 Flutter 的 Firestore 中向数组中添加相等的元素?

如何在 React native redux 的 reducer 中向数组添加元素?

如何在 C# 中向窗口添加滚动条

在 Windows Mobile 5 中向标题栏添加自定义按钮

如何在 Scala 中向数组添加元素并查找变量类型?