Dapatkan Kiraan Item daripada IEnumerable
Pertimbangkan senario di mana anda mempunyai IEnumerable
private IEnumerable<string> Tables { get { yield return "Foo"; yield return "Bar"; } }
Anda ingin mengulangi koleksi ini dan memaparkan kemajuan sebagai "memproses #n #m." Adakah terdapat cara untuk menentukan nilai m tanpa lelaran sebelum lelaran utama?
Memahami IEnumerable
Secara lalai, IEnumerable tidak membenarkan pengambilan terus kiraan item. Sifat penilaiannya yang malas bermakna unsur-unsur hanya diambil mengikut keperluan. Pilihan reka bentuk ini dibuat untuk mengoptimumkan penggunaan sumber dengan mengelakkan peruntukan dan pemprosesan memori yang tidak perlu.
Penyelesaian Alternatif: Menggunakan ICollection
Jika anda memerlukan pengetahuan segera tentang kiraan item, alternatif kepada IEnumerable ialah menggunakan ICollection
public class TableCollection : ICollection<string> { // Implementation details omitted for brevity public int Count => 2; }
Dengan menghantar koleksi Jadual anda ke ICollection
Kesimpulan
Sementara IEnumerable menawarkan faedah penilaian malas, ia tidak menyokong pengambilan kiraan item secara langsung. Untuk akses segera kepada kiraan, pertimbangkan untuk menggunakan ICollection atau struktur data yang lebih sesuai yang menyediakan fungsi ini.
Atas ialah kandungan terperinci Bagaimana untuk Mendapatkan Kiraan Item dalam IEnumerable tanpa Lelaran?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!