Rumah >pembangunan bahagian belakang >C++ >Bolehkah Kaedah Generik C# Mengekang Parameter Jenis kepada Pembina Tertentu?
Kekangan pembina dengan spesifikasi parameter dalam C#
Dalam C#, kaedah generik membenarkan kekangan dikenakan pada parameter jenis. Sebagai contoh, kod berikut menunjukkan kekangan yang memerlukan jenis parameter T untuk mempunyai pembina tanpa parameter:
<code class="language-csharp">public class A { public static T Method<T>(T a) where T : new() { //...do something... return new T(); } }</code>
Ini menimbulkan persoalan: bolehkah kita memperhalusi kekangan dan menentukan bahawa T harus mempunyai pembina yang menerima argumen apungan[,]? Malangnya, percubaan berikut gagal untuk disusun:
<code class="language-csharp">public class A { public static T Method<T>(T a) where T : new(float[,] u) { //...do something... return new T(new float[0,0]); } }</code>
Penyelesaian
Memandangkan kekangan ini tidak boleh digunakan, kami boleh menggunakan penyelesaian dan menggunakan perwakilan untuk memulakan objek jenis T:
<code class="language-csharp">public class A { public static void Method<T>(T a, Func<float[,], T> creator) { //...do something... } }</code>
Atas ialah kandungan terperinci Bolehkah Kaedah Generik C# Mengekang Parameter Jenis kepada Pembina Tertentu?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!