Rumah >pembangunan bahagian belakang >C++ >Mengapa .NET's `IEnumerable` Tidak Mempunyai Kaedah Sambungan `ForEach`?

Mengapa .NET's `IEnumerable` Tidak Mempunyai Kaedah Sambungan `ForEach`?

Linda Hamilton
Linda Hamiltonasal
2025-01-22 02:47:12207semak imbas

Why Doesn't .NET's `IEnumerable` Have a `ForEach` Extension Method?

.NET's IEnumerable: Kaedah Sambungan ForEach Yang Hilang

Tidak seperti kebanyakan bahasa lain, Rangka Kerja .NET secara mengejutkan meninggalkan ForEach kaedah sambungan untuk IEnumerable. Ketiadaan ini sering menimbulkan persoalan, dengan kebimbangan prestasi sering disebut sebagai sebab yang berpotensi.

Mengapa Peninggalan?

Penyataan foreach terbina dalam C# sudah mengendalikan kebanyakan keperluan lelaran dengan berkesan. Menambah kaedah sambungan ForEach akan menjadi berlebihan.

Selain itu, kebolehbacaan pernyataan foreach secara amnya melebihi panggilan kaedah ForEach():

<code class="language-csharp">// Using ForEach() extension method
list.ForEach(item => item.DoSomething());

// Using foreach statement
foreach (var item in list)
{
    item.DoSomething();
}</code>

Walaupun foreach memerlukan lebih banyak ketukan kekunci, kejelasannya selalunya menang.

Menimbang Semula Keperluan

Perbualan terbaharu telah menyerlahkan potensi manfaat daripada ForEach() kaedah sambungan:

  • Keselamatan jenis masa kompilasi: ForEach() menyediakan semakan jenis masa kompilasi, tidak seperti semakan masa jalan foreach.
  • Seruan perwakilan ringkas: Memanggil perwakilan lebih padat dengan ForEach(), dicontohkan oleh objects.ForEach(DoSomething).
  • Potensi rantaian kaedah: Walaupun nilai praktikal dan potensi kelemahan memerlukan pertimbangan yang teliti, ForEach() membolehkan rantaian kaedah.

Kelebihan ini mencadangkan bahawa kaedah ForEach() piawai boleh menjadi tambahan yang berharga kepada versi .NET masa hadapan.

Atas ialah kandungan terperinci Mengapa .NET's `IEnumerable` Tidak Mempunyai Kaedah Sambungan `ForEach`?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
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