Koleksi Null lwn. Kosong: Amalan Terbaik untuk Pemulangan Kaedah
Apabila mereka bentuk kaedah yang mengembalikan koleksi, pilihan antara mengembalikan null
atau koleksi kosong memberi kesan ketara kepada kejelasan dan keteguhan kod. Artikel ini menyokong pemulangan koleksi kosong secara konsisten.
Mengapa Koleksi Kosong Diutamakan
Memulangkan koleksi kosong mengelakkan potensi ralat NullReferenceException
. Pertimbangkan senario ini:
<code class="language-csharp">if (myInstance.CollectionProperty != null) { foreach (var item in myInstance.CollectionProperty) // Process items }</code>
Jika CollectionProperty
kembali null
apabila tiada keputusan wujud, semakan if
adalah wajib, menambah kerumitan. Koleksi kosong menghapuskan semakan ini, memudahkan kod:
<code class="language-csharp">foreach (var item in myInstance.CollectionProperty) // Process items (no null check needed)</code>
Menghapuskan Pemeriksaan Batal dan Pengendalian Pengecualian
Memulangkan koleksi kosong secara konsisten mengurangkan keperluan untuk semakan nol di seluruh pangkalan kod anda. Ini membawa kepada kod yang lebih bersih, lebih boleh diselenggara dan mengurangkan risiko mengabaikan potensi NullReferenceException
senario.
Amalan Terbaik Permulaan Harta
Untuk sifat mengembalikan koleksi, mulakan koleksi tersebut semasa penciptaan objek untuk mengelakkan rujukan nol. Ini paling baik dicapai menggunakan corak berikut:
<code class="language-csharp">public List<Foo> Foos { get; private set; } = new List<Foo>();</code>
Ini memastikan harta tanah sentiasa memegang koleksi yang sah (berpotensi kosong).
Nilai Pulangan Kaedah: Pendekatan yang Betul
Kaedah mengembalikan enumerable hendaklah sentiasa mengembalikan enumerable kosong bukannya null
. Ini boleh dilaksanakan secara elegan menggunakan operator penggabungan null:
<code class="language-csharp">public IEnumerable<Foo> GetMyFoos() { return InnerGetFoos() ?? Enumerable.Empty<Foo>(); }</code>
Pertimbangan Prestasi
Enumerable.Empty<T>()
menawarkan kelebihan prestasi berbanding mencipta koleksi kosong baharu setiap kali. Ia menyediakan contoh statik, cache, meminimumkan overhed peruntukan objek.
Atas ialah kandungan terperinci Sekiranya saya kembali NULL atau koleksi kosong dari kaedah saya?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!