用随机值替换多维数组中的所有项

ant*_*ado 2 c# arrays

对于单维数组,通常我会像下面的那样使用for循环,但我想不出一种不涉及大量循环的方法.

for (int i = 0; i < myArray.length; ++i)
{
    myArray[i] = rnd.Next(1, 500);
}
Run Code Online (Sandbox Code Playgroud)

Dmi*_*nko 5

您可以尝试使用低级 Buffer.BlockCopy来隐藏循环:

  // N-D array (whatever dimensions)
  int[,,] array = new int[3, 5, 11]; 

  Buffer.BlockCopy(
    Enumerable
      .Range(0, array.Length)
      .Select(x => rand.Next(0, 500))
      .ToArray(),
    0,
    array,
    0,
    array.Length * sizeof(int)); // sizeof(int) : we copy bytes...
Run Code Online (Sandbox Code Playgroud)

我们创建一维数组

    Enumerable
      .Range(0, array.Length)
      .Select(x => rand.Next(0, 500))
      .ToArray()
Run Code Online (Sandbox Code Playgroud)

使用ND one(array.Length == array.Length(0) * ... * array.GetLEngth(N))的总长度并将其复制到ND one中.