Artikelanzahl aus IEnumerable abrufen
Stellen Sie sich ein Szenario vor, in dem Sie ein IEnumerable
private IEnumerable<string> Tables { get { yield return "Foo"; yield return "Bar"; } }
Sie möchten diese Sammlung durchlaufen und den Fortschritt als „Verarbeitung #n von #m“ anzeigen. Gibt es eine Möglichkeit, den Wert von m zu bestimmen, ohne vor der Hauptiteration zu iterieren?
IEnumerable verstehen
Standardmäßig lässt IEnumerable keinen direkten Abruf von zu Artikelanzahl. Die verzögerte Auswertung bedeutet, dass Elemente nur bei Bedarf abgerufen werden. Diese Entwurfswahl wird getroffen, um die Ressourcennutzung zu optimieren, indem unnötige Speicherzuweisung und -verarbeitung vermieden werden.
Alternative Lösung: Verwendung von ICollection
Wenn Sie sofortige Kenntnis der Artikelanzahl benötigen, Eine Alternative zu IEnumerable ist die Verwendung von ICollection
public class TableCollection : ICollection<string> { // Implementation details omitted for brevity public int Count => 2; }
Durch Umwandlung Ihrer Tables-Sammlung in ICollection
Fazit
Während IEnumerable dies bietet Vorteile der Lazy-Evaluierung: Das Abrufen der Artikelanzahl wird nicht direkt unterstützt. Für den sofortigen Zugriff auf die Zählung sollten Sie ICollection oder eine geeignetere Datenstruktur verwenden, die diese Funktionalität bietet.
Das obige ist der detaillierte Inhalt vonWie erhalte ich die Anzahl der Elemente in einem IEnumerable ohne Iteration?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!