Le problème est que vous appelez List<T>.Reverse()
qui retourne void
.
Vous pouvez soit faire:
List<string> names = "Tom,Scott,Bob".Split(',').ToList<string>();
names.Reverse();
ou:
IList<string> names = "Tom,Scott,Bob".Split(',').Reverse().ToList<string>();
Ce dernier est plus cher, en inversant un IEnumerable<T>
arbitraire implique tamponner toutes les données et qui donne tout - alors que List<T>
peut faire tout le renversement "sur place". (La différence ici est que qu'il appelle la méthode d'extension Enumerable.Reverse<T>()
, au lieu de la méthode d'instance List<T>.Reverse()
.)
Plus efficace encore, vous pouvez utiliser:
string[] namesArray = "Tom,Scott,Bob".Split(',');
List<string> namesList = new List<string>(namesArray.Length);
namesList.AddRange(namesArray);
namesList.Reverse();
Cela évite de créer des tampons d'une taille inappropriée - au prix de prendre quatre déclarations où l'on va faire ... Comme toujours, peser la lisibilité contre la performance dans le cas d'utilisation réelle.
skeet est une bête! – flesh
bien élaboré, j'ai vraiment apprécié! –