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

Sar*_*aya 1 c# arrays

我想创建一个新的数组.让我们说吧

int[] clickNum = new int[800];
Run Code Online (Sandbox Code Playgroud)

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

yam*_*men 7

我想你可以Enumerable.Repeat在初始化数组时使用:

int[] clickNum = Enumerable.Repeat(2, 800).ToArray();
Run Code Online (Sandbox Code Playgroud)

它当然会变慢,但除非你准备开始数以百万计的元素,否则它会没事的.

我的机器上的快速基准测试表明,使用for循环初始化1,000,000个元素2ms,但使用Enumerable.Repeat9ms.

此页面显示它可能会慢20倍.


Wor*_*mbo 5

我认为没有任何内置函数来填充现有的数组/列表.如果你需要在几个地方进行操作,你可以为它编写一个简单的帮助方法:

static void Fill<T>(IList<T> arrayOrList, T value)
{
    for (int i = arrayOrList.Count - 1; i >= 0; i--)
    {
        arrayOrList[i] = value;
    }
}
Run Code Online (Sandbox Code Playgroud)