Inferens jenis C# memudahkan pengisytiharan pembolehubah dengan membiarkan pengkompil menyimpulkan jenis daripada pengamulaan. Walau bagaimanapun, ciri berguna ini tiada untuk pembina, menimbulkan persoalan tentang peninggalannya.
Ketiadaan inferens jenis pembina bukan merupakan kecacatan asas reka bentuk. Ia boleh dilaksanakan dengan menganalisis pembina yang tersedia, menyelesaikan lebihan beban dan memilih padanan "terbaik". Cabarannya terletak pada kerumitan membandingkan pembina merentas jenis yang berbeza dan parameter generik yang berbeza-beza.
Halangan utama ialah pertukaran antara potensi manfaat dan kos pelaksanaan. Walaupun mudah, menambah ciri ini memerlukan usaha pembangunan yang besar. Tambahan pula, ia berisiko memperkenalkan kekaburan dan ralat dalam resolusi lebihan.
Walaupun had ini, pembangun boleh mencapai hasil yang serupa menggunakan corak kilang. Kelas kilang khusus mengendalikan penciptaan objek, menentukan jenis seperti yang diperlukan. Contohnya:
<code class="language-csharp">public class MyTypeFactory { public static MyType<T> Create<T>(T value) { return new MyType<T>(value); } }</code>
Ini membenarkan inferens jenis semasa penciptaan objek:
<code class="language-csharp">var myObj = MyTypeFactory.Create(42);</code>
Inferens jenis pembina telah menjadi cadangan berulang, tetapi pelaksanaannya masih belum selesai disebabkan keutamaan ciri lain. Ia dipertimbangkan secara ringkas untuk C# 6 tetapi akhirnya dikecualikan semasa pembangunan.
Walaupun mudah, ketiadaan inferens jenis pembina dalam C# berpunca daripada kebimbangan praktikal dan ketersediaan penyelesaian seperti corak kilang. Pembangun pada masa ini mesti menggunakan pengisytiharan jenis eksplisit atau strategi alternatif untuk pemulaan objek.
Atas ialah kandungan terperinci Mengapa C# Tidak Mempunyai Inferens Jenis Pembina?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!