如何在 c# 中定义具有相等值的数组

本文关键字:数组 定义 | 更新日期: 2023-09-27 18:35:30

我想创建一个新数组。比方说

int[] clickNum = new int[800];

然后我想做一些类似 clickNum = 2 的事情,这将使从 clickNum[0]clickNum[800] 的所有数组元素都设置为 2 。我知道有一种方法可以通过使用循环来做到这一点;但我所追求的只是一个功能或一种方法。

如何在 c# 中定义具有相等值的数组

我想你可以在初始化数组时使用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();