c#cast byte [*,*,*] to byte []

时间:2009-09-03 07:24:39

标签: c# casting multidimensional-array

我有一个对象,其属性类型为byte [,*]

现在我想使用System.Random :: NextBytes()用随机值填充这个多维数组。 然而,NextBytes采用byte []

的参数

我可以将多维数组以某种方式转换为单维数组,以便将其作为参数传递吗?

谢谢!

1 个答案:

答案 0 :(得分:5)

您无法强制转换,但可以使用byte[]将值从正常byte[,,]快速复制到Buffer.BlockCopy。因此,您必须分配一个正常的字节数组,然后将结果复制过来。

样品:

using System;

class Test
{
    static void Main()
    {
        Random rng = new Random();
        byte[,,] y = new byte[2,2,2];
        FillArray(y, rng);

        foreach (byte b in y)
        {
            Console.WriteLine(b);
        }
    }

    static void FillArray(byte[,,] array, Random rng)
    {
        byte[] tmp = new byte[array.Length];
        rng.NextBytes(tmp);
        Buffer.BlockCopy(tmp, 0, array, 0, tmp.Length);
    }
}