我想创建一个新数组。我们说
int[] clickNum = new int[800];
然后我想做clickNum = 2
之类的事情,这会使所有数组元素从clickNum[0]
开始到clickNum[800]
,设置为2
。我知道有一种方法可以通过使用循环来完成它;但我所追求的只是一个功能或方法来实现它。
答案 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();