Mendapatkan Kiraan IEnumerable tanpa Lelaran
Dalam senario tertentu, pembangun mungkin perlu memastikan kiraan elemen dalam IEnumerable pengumpulan tanpa perlu mengulanginya. Ini timbul, sebagai contoh, apabila status kemajuan perlu dipaparkan dengan menunjukkan bilangan semasa dan jumlah item yang sedang diproses.
Walau bagaimanapun, IEnumerable tidak mempunyai kaedah yang wujud untuk mendapatkan semula kiraan tanpa lelaran. Ini adalah pilihan reka bentuk yang disengajakan, kerana IEnumerable menerima penilaian malas, hanya menjana elemen seperti yang diminta.
Penyelesaian: Menggunakan ICollection
Untuk memintas pengehadan IEnumerable, pembangun boleh memanfaatkan ICollection, yang mewarisi daripada IEnumerable dan termasuk harta Count. Dengan menghantar IEnumerable contoh kepada ICollection, sifat Count boleh diakses terus, memberikan bilangan elemen tanpa memerlukan lelaran.
Contoh:
Pertimbangkan kod berikut:
private IEnumerable<string> Tables
{
get
{
yield return "Foo";
yield return "Bar";
}
}
Salin selepas log masuk
Untuk menentukan kiraan jadual tanpa lelaran, kod boleh diubah suai sebagai berikut:
var count = ((ICollection<string>)Tables).Count;
Salin selepas log masuk
Pelakon ke ICollection membolehkan akses terus kepada sifat Count, menghasilkan nilai 2, menunjukkan bilangan jadual dalam koleksi tanpa memerlukan lelaran.
Atas ialah kandungan terperinci Bagaimana untuk Mendapatkan Kiraan IEnumerable tanpa Lelaran?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!