2009-09-03 8 views
1

J'ai un objet avec une propriété de l'octet de type [,, *]C# octet cast [*, *, *] à l'octet []

maintenant je voudrais utiliser System.Random :: NextBytes() pour remplir ce tableau multidimensionnel avec des valeurs aléatoires. NextBytes prend cependant un argument de byte []

puis-je lancer le tableau multidimensionnel d'une manière ou d'une autre à la dimension singulière afin de le passer en argument?

merci!

Répondre

5

Vous ne pouvez pas lancer, mais vous pouvez copier rapidement les valeurs d'une byte[] normale à un byte[,,] en utilisant Buffer.BlockCopy. Vous devrez donc commencer par allouer un tableau d'octets normal, puis copier les résultats.

Exemple:

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

je vois - merci! –

+0

Bonne réponse. Intelligent. – AMissico