J'essaye d'imprimer le contenu d'un tableau après avoir invoqué certaines méthodes qui le modifient, en Java j'utilise :
System.out.print(Arrays.toString(alg.id));
Comment puis-je faire cela en C# ?
J'essaye d'imprimer le contenu d'un tableau après avoir invoqué certaines méthodes qui le modifient, en Java j'utilise :
System.out.print(Arrays.toString(alg.id));
Comment puis-je faire cela en C# ?
Vous pouvez essayer ceci :
foreach(var item in yourArray)
{
Console.WriteLine(item.ToString());
}
Vous pouvez aussi essayer quelque chose comme ça :
yourArray.ToList().ForEach(i => Console.WriteLine(i.ToString()));
EDIT : pour obtenir la sortie en une seule ligne [d'après votre commentaire] :
Console.WriteLine("[{0}]", string.Join(", ", yourArray));
//output style: [8, 1, 8, 8, 4, 8, 6, 8, 8, 8]
EDIT(2019) : Comme il est mentionné dans d'autres réponses, il est préférable d'utiliser Array.ForEach<T>
et il n'est pas nécessaire de faire la méthode ToList
étape.
Array.ForEach(yourArray, Console.WriteLine);
J'ai décidé de tester les vitesses des différentes méthodes affichées ici :
Voici les quatre méthodes que j'ai utilisées.
static void Print1(string[] toPrint)
{
foreach(string s in toPrint)
{
Console.Write(s);
}
}
static void Print2(string[] toPrint)
{
toPrint.ToList().ForEach(Console.Write);
}
static void Print3(string[] toPrint)
{
Console.WriteLine(string.Join("", toPrint));
}
static void Print4(string[] toPrint)
{
Array.ForEach(toPrint, Console.Write);
}
Les résultats sont les suivants :
Strings per trial: 10000
Number of Trials: 100
Total Time Taken to complete: 00:01:20.5004836
Print1 Average: 484.37ms
Print2 Average: 246.29ms
Print3 Average: 70.57ms
Print4 Average: 233.81ms
Ainsi, Print3 est le plus rapide, car il n'y a qu'un seul appel à la fonction Console.WriteLine
qui semble être le principal goulot d'étranglement pour la vitesse d'impression d'un tableau. Print4 est légèrement plus rapide que Print2 et Print1 est la plus lente de toutes.
Je pense que Print4 est probablement le plus polyvalent des 4 que j'ai testés, même si Print3 est plus rapide.
Si j'ai fait des erreurs, n'hésitez pas à me le faire savoir / à les corriger par vous-même !
EDIT : J'ajoute le IL généré ci-dessous
g__Print10_0://Print1
IL_0000: ldarg.0
IL_0001: stloc.0
IL_0002: ldc.i4.0
IL_0003: stloc.1
IL_0004: br.s IL_0012
IL_0006: ldloc.0
IL_0007: ldloc.1
IL_0008: ldelem.ref
IL_0009: call System.Console.Write
IL_000E: ldloc.1
IL_000F: ldc.i4.1
IL_0010: add
IL_0011: stloc.1
IL_0012: ldloc.1
IL_0013: ldloc.0
IL_0014: ldlen
IL_0015: conv.i4
IL_0016: blt.s IL_0006
IL_0018: ret
g__Print20_1://Print2
IL_0000: ldarg.0
IL_0001: call System.Linq.Enumerable.ToList<String>
IL_0006: ldnull
IL_0007: ldftn System.Console.Write
IL_000D: newobj System.Action<System.String>..ctor
IL_0012: callvirt System.Collections.Generic.List<System.String>.ForEach
IL_0017: ret
g__Print30_2://Print3
IL_0000: ldstr ""
IL_0005: ldarg.0
IL_0006: call System.String.Join
IL_000B: call System.Console.WriteLine
IL_0010: ret
g__Print40_3://Print4
IL_0000: ldarg.0
IL_0001: ldnull
IL_0002: ldftn System.Console.Write
IL_0008: newobj System.Action<System.String>..ctor
IL_000D: call System.Array.ForEach<String>
IL_0012: ret
Une autre approche avec le Array.ForEach<T> Method (T[], Action<T>)
de la méthode Array
classe
Array.ForEach(myArray, Console.WriteLine);
Cela ne prend qu'une seule itération par rapport à array.ToList().ForEach(Console.WriteLine)
qui prend deux itérations et crée en interne un second tableau pour le fichier List
(double temps d'exécution des itérations et double consommation de mémoire)
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.