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
Barbara Streisandoriginal
2024-12-26 06:50:13371parcourir

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";
    }
}

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

var count = ((ICollection<string>)Tables).Count;

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!

Déclaration:
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