Rumah > pembangunan bahagian belakang > C++ > Bagaimanakah Saya Boleh Mendapatkan Kiraan IEnumerable Tanpa Mengulangkannya?

Bagaimanakah Saya Boleh Mendapatkan Kiraan IEnumerable Tanpa Mengulangkannya?

Patricia Arquette
Lepaskan: 2024-12-27 10:29:17
asal
284 orang telah melayarinya

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

Menyenaraikan IEnumerable Tanpa Mengulang: Dilema Kiraan

Apabila bekerja dengan IEnumerable, prinsip asasnya ialah penilaian malas, di mana unsur-unsur diambil hanya apabila dan apabila diperlukan. Walau bagaimanapun, kadangkala kita mungkin mendapati diri kita berada dalam situasi di mana kita perlu mengetahui bilangan item dalam koleksi tanpa mengulanginya.

Pertimbangkan coretan kod berikut:

private IEnumerable<string> Tables
{
    get
    {
        yield return "Foo";
        yield return "Bar";
    }
}
Salin selepas log masuk

Jika kita ingin mengulangi koleksi ini dan memaparkan kemajuan sebagai "memproses #n #m", bagaimana kita boleh menentukan nilai m tanpa berulang?

Had IEnumerable

Malangnya, ini tidak boleh dilakukan dengan IEnumerable. Dengan reka bentuk, ia beroperasi dengan malas, hanya menghasilkan elemen apabila diminta. Menentukan jumlah kiraan terlebih dahulu akan memerlukan traversal pendahuluan, mengalahkan tujuan penilaian malas.

ICCollection to the Rescue

Jika mengetahui kiraan tanpa lelaran adalah penting, pertimbangkan menggunakan ICollection sebaliknya. ICollection ialah antara muka yang mewakili koleksi yang boleh memberikan maklumat tentang kandungannya. Ia termasuk sifat Count yang mengembalikan bilangan elemen dalam koleksi.

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

int count = Tables.Count;
Salin selepas log masuk

Dengan menghantar Jadual ke Senarai, kami boleh mengakses sifat Count dan mendapatkan kiraan tanpa lelaran.

Kesimpulannya, sementara IEnumerable bersinar kerana kecekapannya dalam penilaian malas, kekurangan maklumat kiraan awal boleh menjadi had. Untuk senario di mana mengetahui kiraan terlebih dahulu adalah penting, pertimbangkan untuk menggunakan ICollection sebaliknya.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mendapatkan Kiraan IEnumerable Tanpa Mengulangkannya?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan