Copie de tableau d'octets à un autre tableau d'octets en C#
Il y a deux tableaux d'octets qui sont remplis avec des valeurs différentes.
byte[] Array1 = new byte[5];
byte[] Array2 = new byte[5];
Puis, j'ai besoin de Array1
d'obtenir exactement les mêmes valeurs que Array2
.
En tapant Array1 = Array2
je voudrais juste définir des références, ce ne serait pas copier les valeurs.
Ce qui pourrait être la solution?
EDIT:
Toutes les réponses sont bonnes et toutes les solutions de travail. Le code de la première solution semble visuellement plus descriptif pour mon cas particulier.
Array1 = Tableau2.ToArray();
et
Matrice1.CopyTo(Tableau2, 0);
ainsi que
Tampon.BlockCopy(Tableau2, 0, Matrice1, 0, 5);
Enquêter sur les
Double Possible de Copier des Octets à partir d'un tableau d'octets à une position spécifique d'un autre tableau d'Octets en C#
Non, le premier tableau doit être une copie exacte de la seconde. Mais il ne devrait pas être lié en aucune façon. Ne devrait pas être un pointeur.
"Les deux réponses sont bonnes et les deux solutions fonctionnent". Ainsi que
Buffer.BlockCopy
.Double Possible de Copier des Octets à partir d'un tableau d'octets à une position spécifique d'un autre tableau d'Octets en C#
Non, le premier tableau doit être une copie exacte de la seconde. Mais il ne devrait pas être lié en aucune façon. Ne devrait pas être un pointeur.
"Les deux réponses sont bonnes et les deux solutions fonctionnent". Ainsi que
Buffer.BlockCopy
mentionné dans le premier commentaire, tout Tableau.Copie la surcharge, Tableau.CloneOriginalL'auteur acoder | 2016-01-17
Vous devez vous connecter pour publier un commentaire.
Une solution de courtoisie de Linq...
EDIT: vous n'avez pas besoin d'allouer de l'espace pour Matrice1 avant d'utiliser ce Linq appel. L'allocation pour
Array1
est fait dansToArray()
. Exemple complet ci-dessousVa le faire, la déclaration de l'OP "En tapant
Array1 = Array2
je viens de mettre les références, je n'ai pas copier les valeurs" que je pensais être une tentative de dire que la matrice de référence a été copié, et que les valeurs elles-mêmes n'ont pas été reproduites. Cela semble également être le cas dans son dernier commentaire ", Mais il ne devrait pas être lié en aucune façon.", j'ai pensé que c'était une tentative de direArray1[0] = (byte) 1
ne rien faire pour les valeurs deArray2
Oui, je suis d'accord. C'est pourquoi je pense que votre réponse est relativement propre solution. J'ai juste pensé que l'OP pourriez avoir besoin pour comprendre la mécanique un peu plus profondément.
Ce que j'ai compris,
Array2.ToArray()
alloue un nouveau tableau. Que faire siArray1 = Array2.ToArray();
est exécutée plusieurs fois, dans une boucle for par exemple? Est-ce que ces allocations restent en mémoire?Non, ils obtiendront des ordures collectées.
OriginalL'auteur Frank Bryce
MSDN
OriginalL'auteur Qwertiy