有没有办法在 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<T>
或类似的情况。 List<T>
在后台维护一个 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<T>
,这正是它专门设计的场景。向其中添加元素后,如果需要数组,只需调用 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 中向数组添加元素?