Mengatasi Amaran Berbilang Penghitungan untuk IEnumerable
Apabila bekerja dengan IEnumerable dalam kod, pembangun sering menghadapi amaran "Kemungkinan penghitungan berbilang IEnumerable". Isu ini timbul apabila cuba mengulangi koleksi beberapa kali, menghasilkan keputusan yang tidak dapat diramalkan. Menyelesaikan amaran ini sambil mengekalkan fungsi kod boleh menjadi satu cabaran.
Pertimbangkan coretan kod berikut:
public List<object> Foo(IEnumerable<object> objects) { if (objects == null || !objects.Any()) throw new ArgumentException(); var firstObject = objects.First(); var list = DoSomeThing(firstObject); var secondList = DoSomeThingElse(objects); list.AddRange(secondList); return list; }
Dalam contoh ini, parameter objek ditakrifkan sebagai IEnumerable, membenarkan pemanggil menghantar pelbagai jenis koleksi. Walau bagaimanapun, memandangkan IEnumerable tidak menjamin satu penghitungan, mengaksesnya beberapa kali mencetuskan amaran.
Untuk menyelesaikannya, pilihan berikut wujud:
Tukar kepada IList
Menukar objek untuk menaip IList atau ICollection menjelaskan jangkaan bahawa parameter yang diluluskan haruslah koleksi yang boleh dibilang beberapa kali. Penyelesaian ini menghapuskan amaran tetapi mempunyai kelemahan yang memerlukan pemanggil untuk menukar secara eksplisit IEnumerable standard kepada senarai atau koleksi.
Tukar pada Kaedah Mula
Pendekatan lain ialah dengan segera tukar IEnumerable kepada Senarai pada permulaan kaedah:
public List<object> Foo(IEnumerable<object> objects) { var objectList = objects.ToList(); // ... }
Sementara pendekatan ini menyelesaikan amaran, ia menambahkan langkah tambahan pada kod dan boleh memperkenalkan overhed yang tidak perlu untuk koleksi yang berpotensi besar.
Penyelesaian yang disyorkan ialah mereka bentuk kaedah untuk mengendalikan berbilang penghitungan secara eksplisit. Ini boleh dicapai dengan mentakrifkan parameter objek sebagai antara muka yang menggabungkan IEnumerable, Count dan Indexer, tanpa kaedah Tambah/Buang. Pada masa ini, antara muka sedemikian tidak wujud dalam .NET.
Dengan menyesuaikan diri dengan pendekatan ini, pembangun boleh mengurus amaran dengan berkesan yang dikaitkan dengan berbilang penghitungan IEnumerable, memastikan kejelasan kod dan tingkah laku boleh diramal.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Menangani Amaran 'Kemungkinan Berbilang Penghitungan IEnumerable' dengan Berkesan?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!