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

时间:2012-05-26 23:13:58

标签: c# arrays

我想创建一个新数组。我们说

int[] clickNum = new int[800];

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

4 个答案:

答案 0 :(得分:7)

我认为在初始化数组时可以使用Enumerable.Repeat

int[] clickNum = Enumerable.Repeat(2, 800).ToArray();

它当然会慢一点,但除非你真的要启动数百万个元素,否则它会很好

我的计算机上的快速基准测试表明,使用for循环初始化1,000,000个元素需要2ms,但使用Enumerable.Repeat需要9ms

This page表明它可能会慢20倍。

答案 1 :(得分:5)

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

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

答案 2 :(得分:1)

我猜您正在寻找您创建的功能,但您没有时间输入它。因此,如果您想要一行,请尝试:

for(int i = 0; i < clickNum.Length; i++, clickNum[i] = 2);

答案 3 :(得分:1)

如果使用非常大的数组并且性能问题,使用Array.ConvertAll应该更有效:

int[] clickNum = Array.ConvertAll(new int[800], x => x = 2);

如果性能不让您担心,您还可以使用标准的LINQ Select:

int[] clickNum = new int[800].Select(x => x = 2).ToArray();