Les différences et les effets de performance de l'iénumation et la liste dans le C #
Lors du traitement de la collection en C #, la différence entre
et est très importante. IEnumerable
représente un énumérateur, qui fournit une méthode pour traverser la collection; List
est l'implémentation spécifique de l'interface IEnumerable
. List
IEnumerable
Considérez les deux requête LINQ suivantes:
Le principe de travail de l'énumérateur
<code class="language-csharp">List<animal> sel1 = (from animal in Animals join race in Species on animal.SpeciesKey equals race.SpeciesKey select animal).Distinct().ToList(); IEnumerable<animal> sel2 = (from animal in Animals join race in Species on animal.SpeciesKey equals race.SpeciesKey select animal).Distinct();</code>
Lors de l'utilisation de , le débogage montrera des membres tels que "intérieur" et "extérieur", ce qui peut être déroutant. Les membres "intérieurs" comprennent des objets de l'ensemble de connexion (espèces) et les membres "externes" incluent des objets de l'ensemble initial (animal). Requête en utilisant ces membres pour effectuer l'opération de connexion.
Considérations de performance IEnumerable
est généralement plus favorisé car il est retardé jusqu'à la requête d'énumération. En utilisant pour forcer les résultats immédiatement calculés et spécifiques, cela peut limiter les opportunités d'optimisation. Mais si vous devez effectuer une requête plusieurs fois, il sera converti en
plus efficace, car il peut empêcher le calcul de la requête à chaque fois.
IEnumerable
Utiliser la scène ToList()
applicable à la situation suivante: List
Je souhaite retarder l'exécution jusqu'à plus tard. souhaite optimiser les performances de la requête.
Plusieurs itérations peuvent être nécessaires. IEnumerable
List
IEnumerable
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!