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 des

int[] 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.

126
demandé sur bluish 2009-04-09 11:49:59

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
236
répondu Marc Gravell 2009-04-09 07:52:09

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 .

17
répondu Pontus Gagge 2017-05-23 12:18:30
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.

2
répondu bajran 2017-05-16 10:55:29

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);

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'.

1
répondu Appurist-PaulW 2015-01-09 05:05:15

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();
            }
        }
0
répondu Hameed Syed 2018-01-26 09:55:56