Heim >Backend-Entwicklung >C++ >Wie kann ich Elemente in einem IEnumerable ohne Iteration zählen?

Wie kann ich Elemente in einem IEnumerable ohne Iteration zählen?

DDD
DDDOriginal
2024-12-27 10:11:16766Durchsuche

How Can I Count Items in an IEnumerable Without Iteration?

Elemente in einem IEnumerable zählen Ohne Iteration

Beim Arbeiten mit einer Sequenz ist es oft notwendig, die Gesamtzahl der Elemente zu bestimmen, bevor man sie durchläuft. IEnumerable bietet keinen direkten Mechanismus zum Zählen von Elementen ohne Iteration.

Zählen ohne Iteration

Um eine Elementzählung ohne Iteration zu erreichen, beachten Sie Folgendes:

  • ICollection: Wenn Ihre Datenquelle implementiert ICollection können Sie direkt auf die Count-Eigenschaft zugreifen. ICollection stellt eine Sammlung dar, die effizient gezählt werden kann.

Beispiel

Gegeben die folgende Tables-Eigenschaft:

private IEnumerable<string> Tables
{
    get
    {
        yield return "Foo";
        yield return "Bar";
    }
}

Ohne Iteration, Sie kann ICollection um die Elemente zu zählen:

var count = (Tables as ICollection<string>).Count;
Console.WriteLine($"You'll process {count} tables");

Hinweis:

  • IEnumerable betont die verzögerte Auswertung, was bedeutet, dass Elemente nur auf Anfrage abgerufen werden.
  • ICollection unterstützt die direkte Zählung aufgrund seiner effizienten Sammlungsdarstellung. Wählen Sie diese Option, wenn die Artikelzählung eine kritische Leistungsanforderung ist.

Das obige ist der detaillierte Inhalt vonWie kann ich Elemente in einem IEnumerable ohne Iteration zählen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
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