2009-09-04 6 views
2

je dois copier le tableau int suivant pour tableau:C# - Copie Array en utilisant CopyTo() -Aide

int[] intArray=new int[] {10,34,67,11}; 

i essayé comme

Array copyArray=Array.CreateInstance(typeof(int),intArray.Length,intArray); 
intArray.CopyTo(copyArray,0); 

Mais, il semble que je l'ai fait une erreur, donc je n'ai pas eu le résultat.

Répondre

5

Cela fonctionne:

int[] intArray = new int[] { 10, 34, 67, 11 }; 
Array copyArray = Array.CreateInstance(typeof(int), intArray.Length); 
intArray.CopyTo(copyArray, 0); 
foreach (var i in copyArray) 
    Console.WriteLine(i); 

Vous avez ajouté un "intArray" supplémentaire dans votre ligne Array.CreateInstance.

Cela étant dit, cela peut être simplifiée si vous n'avez pas besoin de la méthode Array.CreateInstance (pas sûr si c'est ce que vous essayez de travailler, si):

int[] intArray = new int[] { 10, 34, 67, 11 }; 
int[] copyArray = new int[intArray.Length]; 
intArray.CopyTo(copyArray, 0); 

Encore plus simple:

int[] intArray = new int[] { 10, 34, 67, 11 }; 
int[] copyArray = (int[])intArray.Clone(); 
+0

Oui tha t tableau supplémentaire est la cause du problème – user160677

4

Essayez ceci:

int[] copyArray = new int[intArray.Length]; 
Array.Copy(intArray, copyArray, intArray.Length); 
7

Savez-vous qu'un int[] est déjà un Array? Si vous avez juste besoin de le passer à quelque chose acceptant Array, et cela ne vous dérange pas si cela change le contenu, il suffit de passer dans la référence d'origine.

Une autre alternative consiste à cloner:

int[] clone = (int[]) intArray.Clone(); 

Si vous vraiment besoin d'utiliser Array.CopyTo puis utilisez les autres réponses - mais sinon, cette voie sera plus simple :)

+0

Merci jon pour le signaler – user160677

1

Dans ce cas particulier, il suffit d'utiliser

int[] copyArray = (int[]) intArray.Clone();