J'ai un tableau unique d'éléments déclarés et initialisés comme suit: Je voudrais inverser les membres et trouvé Quels avantages, le cas échéant , la mise en œuvre de Linq d'inverse a-t-elle over énumérable.Reverse . P> array.Reverse () code > ? p> p>
3 Réponses :
system.linq.enumerable.Reverse () code> fonctionne sur toutes les classes qui implémentent ienumerable code> où comme système.array.Reverse () code> seulement fonctionne sur des tableaux. Si vous savez que vous avez un tableau, il n'y a rien de mal à utiliser system.array.arrever () code>. P>
Non seulement il n'y a rien de mal à cela, mais cela a probablement une meilleure performance ...
@THOMAS: Si le résultat doit être un tableau au lieu d'un ienumerable code>: convenu.
à côté de ce que Daniel a dit system.linq.enumerable.Reverse () code> crée réellement une copie puis iterate it iterate de fin au début, lorsque système.array.rray.Rray.Reverse (code> fait en place la transformation. P>
Remarques sur MSDN ( MSDN.MicRosoft.com/en-us/Library/BB358497. ASPX ): "Cette méthode est mise en œuvre à l'aide d'une exécution différée. La valeur de retour immédiate est un objet qui stocke toutes les informations nécessaires à l'action ..." "Cette méthode de tri ne considère pas les valeurs réelles eux-mêmes pour déterminer l'ordre. Au lieu de cela, cela renvoie simplement les éléments de l'ordre inverse à partir desquels ils sont produits par la source sous-jacente. " Une manière compliquée de dire ce que vous avez commenté, je pense ... :) Merci!
@MBroNnycyc Eh bien, MSDN ne stipule pas explicitement que ienumerable.Reverse code> crée une copie, car il n'est pas strictement nécessaire pour les tableaux. Je l'ai trouvé en décompilant les assemblées.
Si la performance vous importe, utilisez array.Reverse () code>.
system.linq.enumerable.Reverse () code> a l'avantage de travailler sur chaque iNeumable comme des tableaux, des listes et ainsi de suite. P>