如何在 c# 中定义具有相等值的数组
本文关键字:数组 定义 | 更新日期: 2023-09-27 18:35:30
我想创建一个新数组。比方说
int[] clickNum = new int[800];
然后我想做一些类似 clickNum = 2
的事情,这将使从 clickNum[0]
到 clickNum[800]
的所有数组元素都设置为 2
。我知道有一种方法可以通过使用循环来做到这一点;但我所追求的只是一个功能或一种方法。
我想你可以在初始化数组时使用Enumerable.Repeat
:
int[] clickNum = Enumerable.Repeat(2, 800).ToArray();
它当然会更慢,但除非你要启动数百万个元素,否则它会没事的。
在我的机器上进行的快速基准测试表明,使用 for
循环初始化 1,000,000 个元素需要2ms
,但使用Enumerable.Repeat
需要9ms
。
此页面表明它可能最多慢 20 倍。
我认为没有任何内置函数可以填充现有的数组/列表。如果需要在多个位置进行操作,则可以为此编写一个简单的帮助程序方法:
static void Fill<T>(IList<T> arrayOrList, T value)
{
for (int i = arrayOrList.Count - 1; i >= 0; i--)
{
arrayOrList[i] = value;
}
}
我猜你正在寻找你创建的函数,但你没有时间输入它。因此,如果您希望它在一行中,请尝试:
for(int i = 0; i < clickNum.Length; i++, clickNum[i] = 2);
如果您使用的是非常大的数组并且性能是一个问题,那么使用 Array.ConvertAll 应该更有效率:
int[] clickNum = Array.ConvertAll(new int[800], x => x = 2);
如果性能不让您担心,您还可以使用标准的 LINQ 选择:
int[] clickNum = new int[800].Select(x => x = 2).ToArray();