Rumah >pembangunan bahagian belakang >C++ >Bagaimanakah Saya Boleh Menghantar Argumen kepada Pembina Generik dalam C# Menggunakan Kekangan `new()`?
Menggunakan new()
kekangan dalam C# untuk menghantar parameter kepada pembina generik
Apabila menambah elemen pada senarai, cuba mencipta objek baharu jenis T dengan parameter pembina, anda mungkin menghadapi ralat kompilasi yang menyatakan bahawa parameter tidak boleh disediakan semasa membuat contoh pembolehubah. Ralat ini berlaku walaupun terdapat parameter pembina dalam kelas.
Untuk menyelesaikan masalah ini, new()
kekangan jenis generik mesti digunakan. Walaupun kekangan ini membenarkan penciptaan contoh tanpa parameter, ia tidak mencukupi untuk kes di mana parameter pembina disertakan.
Alternatifnya ialah memperkenalkan parameter supaya objek dibuat berdasarkan parameter. Fungsi boleh mencapai ini dengan cekap.
<code class="language-csharp">public static string GetAllItems<T>(..., Func<ListItem, T> del) { ... List<T> tabListItems = new List<T>(); foreach (ListItem listItem in listCollection) { tabListItems.Add(del(listItem)); } ... }</code>
Fungsi ini boleh dipanggil menggunakan ungkapan lambda yang mencipta objek baharu dengan parameter yang diperlukan:
<code class="language-csharp">GetAllItems<Foo>(..., l => new Foo(l));</code>
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Menghantar Argumen kepada Pembina Generik dalam C# Menggunakan Kekangan `new()`?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!