Ermitteln der Anzahl von IEnumerable ohne Iteration
In bestimmten Szenarien müssen Entwickler möglicherweise die Anzahl der Elemente innerhalb eines IEnumerable ermitteln. Sammlung ohne die Notwendigkeit, sie zu durchlaufen. Dies tritt beispielsweise auf, wenn ein Fortschrittsstatus angezeigt werden muss, indem die aktuelle und die Gesamtzahl der verarbeiteten Elemente angegeben werden.
IEnumerable Es fehlt eine inhärente Methode zum Abrufen der Anzahl ohne Iteration. Dies ist eine bewusste Designentscheidung, da IEnumerable umfasst eine verzögerte Auswertung und generiert nur Elemente, wenn sie angefordert werden.
Lösung: Verwendung von ICollection
Um die Einschränkung von IEnumerable zu umgehen, können Entwickler dies nutzen ICollection, das von IEnumerable erbt. und enthält eine Count-Eigenschaft. Durch das Umwandeln des IEnumerable Instanz zu ICollection kann direkt auf die Count-Eigenschaft zugegriffen werden, wodurch die Anzahl der Elemente bereitgestellt wird, ohne dass eine Iteration erforderlich ist.
Beispiel:
Betrachten Sie den folgenden Code:
private IEnumerable<string> Tables
{
get
{
yield return "Foo";
yield return "Bar";
}
}
Nach dem Login kopieren
Um die Anzahl der Tabellen ohne Iteration zu ermitteln, kann der Code wie folgt geändert werden folgt:
var count = ((ICollection<string>)Tables).Count;
Nach dem Login kopieren
Die Besetzung von ICollection ermöglicht den direkten Zugriff auf die Count-Eigenschaft und liefert den Wert 2, der die Anzahl der Tabellen in der Sammlung angibt, ohne dass eine Iteration erforderlich ist.
Das obige ist der detaillierte Inhalt vonWie erhalte ich die Anzahl einer IEnumerable ohne Iteration?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!