Rumah >pembangunan bahagian belakang >C++ >Mengapa Saya Tidak Boleh Menggunakan Kekangan Jenis Enum dalam C# Generics?
Kekangan Jenis Enum dalam C#: Memahami Had
Dalam C#, kekangan jenis biasanya digunakan untuk menyekat jenis parameter generik. Walau bagaimanapun, satu pengecualian yang ketara ialah enum, yang tidak boleh dikekang. Ini telah menyebabkan ramai pembangun tertanya-tanya tentang alasan di sebalik pengehadan ini.
Taakul untuk Kekurangan Kekangan Enum
Walaupun alasan yang tepat diperdebatkan, beberapa faktor dipercayai telah mempengaruhi keputusan ini:
Mengatasi Had
Walaupun tiada kekangan enum langsung, terdapat penyelesaian tersedia untuk mencapai kefungsian serupa melalui kelas asas abstrak dan bersarang kelas:
public abstract class Enums<Temp> where Temp : class { public static TEnum Parse<TEnum>(string name) where TEnum : struct, Temp { return (TEnum)Enum.Parse(typeof(TEnum), name); } } public abstract class Enums : Enums<Enum> { } Enums.Parse<DateTimeKind>("Local")
Pendekatan ini mentakrifkan kelas asas abstrak (Enums
Penghadan Kaedah Sambungan
Walaupun penyelesaian membenarkan semakan jenis enum, ia tidak boleh digunakan untuk mencipta sambungan kaedah. Had ini berpunca daripada fakta bahawa kaedah sambungan tidak boleh mengakses argumen jenis generik kelas.
Atas ialah kandungan terperinci Mengapa Saya Tidak Boleh Menggunakan Kekangan Jenis Enum dalam C# Generics?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!