Comment copier une partie d'un tableau à un autre tableau en C#?
comment copier une partie d'un tableau vers un autre tableau?
"151920920 Considérer" je vais avoir desint[] a = {1,2,3,4,5};
maintenant si je donne l'index de début et l'index de fin du tableau a
il devrait obtenir copié à un autre tableau.
comme si je donnais l'index de début comme 1 et l'index de fin comme 3, les éléments 2, 3, 4 devraient être copiés dans le nouveau tableau.
5 réponses
int[] b = new int[3];
Array.Copy(a, 1, b, 0, 3);
- "151920920 une" source = array
- 1 = un indice dans le tableau source
- b = Tableau de destination
- 0 = index de début dans le tableau de destination
- 3 = éléments à copier
voir cette question . LINQ Take() et Skip () sont les réponses les plus populaires, ainsi que le tableau.CopyTo ().
a supposément plus rapide la méthode d'extension est décrite ici .
int[] a = {1,2,3,4,5};
int [] b= new int[a.length]; //New Array and the size of a which is 4
Array.Copy(a,b,a.length);
où Array est une classe ayant une copie de méthode, qui copie l'élément d'un tableau en tableau B.
en copiant d'un tableau à un autre tableau, vous devez fournir le même type de données à un autre tableau dont vous copiez.
Note: j'ai trouvé cette question à la recherche d'une des étapes dans la réponse à redimensionner un tableau existant.
donc j'ai pensé que je voudrais ajouter cette information ici, au cas où quelqu'un d'autre était à la recherche de comment faire une copie étendue comme une réponse partielle à la question de redimensionner un tableau.
pour quiconque trouve cette question en cherchant la même chose que moi, c'est très simple:
Array.Resize<T>(ref arrayVariable, newSize);
où T est le type, c'est-à-dire où arrayVariable est déclaré:
T[] arrayVariable;
cette méthode gère les vérifications nulles, ainsi que newSize==oldSize n'ayant aucun effet, et bien sûr gère silencieusement le cas où l'un des tableaux est plus long que l'autre.
Voir l'article MSDN pour plus d'.
dans le cas où vous voulez implémenter votre propre tableau .Copier la méthode .
méthode statique de type générique.
static void MyCopy<T>(T[] sourceArray, long sourceIndex, T[] destinationArray, long destinationIndex, long copyNoOfElements)
{
long totaltraversal = sourceIndex + copyNoOfElements;
long sourceArrayLength = sourceArray.Length;
//to check all array's length and its indices properties before copying
CheckBoundaries(sourceArray, sourceIndex, destinationArray, copyNoOfElements, sourceArrayLength);
for (long i = sourceIndex; i < totaltraversal; i++)
{
destinationArray[destinationIndex++] = sourceArray[i];
}
}
Limites de la méthode de la mise en œuvre.
private static void CheckBoundaries<T>(T[] sourceArray, long sourceIndex, T[] destinationArray, long copyNoOfElements, long sourceArrayLength)
{
if (sourceIndex >= sourceArray.Length)
{
throw new IndexOutOfRangeException();
}
if (copyNoOfElements > sourceArrayLength)
{
throw new IndexOutOfRangeException();
}
if (destinationArray.Length < copyNoOfElements)
{
throw new IndexOutOfRangeException();
}
}