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!