Heim > Backend-Entwicklung > C++ > Wie kann ich die Anzahl eines IEnumerable ermitteln, ohne es zu durchlaufen?

Wie kann ich die Anzahl eines IEnumerable ermitteln, ohne es zu durchlaufen?

Patricia Arquette
Freigeben: 2024-12-27 10:29:17
Original
346 Leute haben es durchsucht

How Can I Get the Count of an IEnumerable Without Iterating Through It?

Aufzählen von IEnumerable ohne Iterieren: Ein Zähldilemma

Bei der Arbeit mit IEnumerable ist das Grundprinzip das der verzögerten Auswertung, bei der Elemente nur bei Bedarf abgerufen werden. Manchmal befinden wir uns jedoch möglicherweise in einer Situation, in der wir die Anzahl der Elemente in der Sammlung kennen müssen, ohne sie zu durchlaufen.

Bedenken Sie den folgenden Codeausschnitt:

private IEnumerable<string> Tables
{
    get
    {
        yield return "Foo";
        yield return "Bar";
    }
}
Nach dem Login kopieren

Wenn wir Ich möchte diese Sammlung durchlaufen und den Fortschritt als „Verarbeitung von #n von #m“ anzeigen. Wie können wir den Wert von m ohne bestimmen? iterieren?

Einschränkungen von IEnumerable

Leider ist dies mit IEnumerable nicht möglich. Es arbeitet konstruktionsbedingt träge und gibt Elemente nur dann zurück, wenn sie angefordert werden. Die vorherige Bestimmung der Gesamtzahl würde eine vorherige Durchquerung erfordern und den Zweck der verzögerten Auswertung zunichte machen.

ICollection to the Rescue

Wenn es wichtig ist, die Anzahl ohne Iteration zu kennen, denken Sie darüber nach Verwenden Sie stattdessen ICollection. ICollection ist eine Schnittstelle, die Sammlungen darstellt, die Informationen über deren Inhalt bereitstellen können. Es enthält eine Count-Eigenschaft, die die Anzahl der Elemente in der Sammlung zurückgibt.

private ICollection<string> Tables
{
    get
    {
        return new List<string> { "Foo", "Bar" };
    }
}

int count = Tables.Count;
Nach dem Login kopieren

Durch die Umwandlung von Tabellen in List können wir auf die Count-Eigenschaft zugreifen und die Anzahl ohne Iteration ermitteln.

Zusammenfassend lässt sich sagen, dass IEnumerable zwar durch seine Effizienz bei der verzögerten Auswertung glänzt, das Fehlen von Zählinformationen im Voraus jedoch eine Einschränkung darstellen kann. Für Szenarien, in denen es unbedingt erforderlich ist, die Anzahl im Voraus zu kennen, sollten Sie stattdessen die Verwendung von ICollection in Betracht ziehen.

Das obige ist der detaillierte Inhalt vonWie kann ich die Anzahl eines IEnumerable ermitteln, ohne es zu durchlaufen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage