Kekangan Jenis Enum dalam C#: Penjelasan Komprehensif
Dalam C#, kekangan jenis membenarkan pembangun menyekat jenis yang dibenarkan untuk parameter kaedah atau sifat . Walaupun jenis enum adalah asas kepada C#, mereka tidak mempunyai kekangan jenis terbina dalam. Keputusan reka bentuk ini telah membingungkan ramai pengaturcara, mendorong pertanyaan tentang rasionalnya.
Mengapa Sekatan C#?
Tidak seperti jenis rujukan, enum ialah jenis nilai, setiap satu mewakili pemalar nilai dalam set yang ditentukan. Menguatkuasakan kekangan jenis pada enum akan menyebabkan beberapa komplikasi:
Penyelesaian:
Walaupun C# tidak membenarkan kekangan jenis enum secara asli, penyelesaian yang bijak telah ditemui. Menggunakan generik dan khususnya kelas Enum, adalah mungkin untuk mencipta jenis tersuai, Enums, dengan kaedah seperti Parse yang boleh menerima nilai rentetan dan menukarnya kepada enum jenis yang diingini. Kaedah ini mencapai kesan yang sama seperti kekangan jenis tanpa kelemahan yang wujud.
Sintaks untuk menggunakan penyelesaian ini adalah seperti berikut:
public static TEnum Parse<TEnum>(string name) where TEnum : struct, Enum { return (TEnum)Enum.Parse(typeof(TEnum), name); }
Untuk menggunakannya, anda boleh menghubungi:
Enums.Parse<DateTimeKind>("Local")
Batasan:
Sementara ini penyelesaian menyediakan penyelesaian, ia mempunyai hadnya:
Walaupun demikian pengehadan, penyelesaian ini membolehkan pembangun mencapai fungsi yang serupa dengan kekangan jenis enum dalam C#, membolehkan mereka menguatkuasakan semakan parameter yang lebih ketat dan tingkatkan kualiti kod.
Atas ialah kandungan terperinci Mengapa C# Tidak Menyokong Kekangan Jenis Enum, dan Apakah Penyelesaian Wujud?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!