2009-09-03 3 views
1

У меня есть объект со свойством типа Byte [,, *]C# литые байты [*, *, *] в байты []

Теперь я хотел бы использовать System.Random :: NextBytes(), чтобы заполнить этот многомерный массив случайными значениями. NextBytes, однако, принимает аргумент byte []

Можно ли каким-либо образом передать многомерный массив одномерному, чтобы передать его в качестве аргумента?

спасибо!

ответ

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); 
    } 
} 
+0

я вижу - спасибо! – 2009-09-03 07:33:18

+0

Хороший ответ. Умная. – AMissico

Смежные вопросы