Maison > développement back-end > C++ > Comment obtenir le nombre d'un IEnumerable sans itération ?

Comment obtenir le nombre d'un IEnumerable sans itération ?

Barbara Streisand
Libérer: 2024-12-26 06:50:13
original
365 Les gens l'ont consulté

How to Get the Count of an IEnumerable without Iteration?

Obtention du nombre de IEnumerable sans itération

Dans certains scénarios, les développeurs peuvent avoir besoin de vérifier le nombre d'éléments dans un IEnumerable collection sans avoir besoin de la parcourir. Cela se produit, par exemple, lorsqu'un statut de progression doit être affiché en indiquant le nombre actuel et total d'éléments en cours de traitement.

Cependant, IEnumerable n'a pas de méthode inhérente pour récupérer le décompte sans itération. Il s'agit d'un choix de conception délibéré, car IEnumerable adopte une évaluation paresseuse, générant uniquement les éléments lorsqu'ils sont demandés.

Solution : en utilisant ICollection

Pour contourner la limitation de IEnumerable, les développeurs peuvent exploiter ICollection, qui hérite de IEnumerable et inclut une propriété Count. En lançant le IEnumerable instance à ICollection, la propriété Count est directement accessible, fournissant le nombre d'éléments sans nécessiter d'itération.

Exemple :

Considérez le code suivant :

private IEnumerable<string> Tables
{
    get
    {
        yield return "Foo";
        yield return "Bar";
    }
}
Copier après la connexion

Pour déterminer le nombre de tables sans itérer, le code peut être modifié comme suit :

var count = ((ICollection<string>)Tables).Count;
Copier après la connexion

Le casting de ICollection permet un accès direct à la propriété Count, donnant la valeur 2, indiquant le nombre de tables dans la collection sans avoir besoin d'itération.

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!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal