Mengapa Menghantar Int ke Nilai Enum Tidak Sah TIDAK Membuang Pengecualian
Dalam C#, enum pada dasarnya adalah jenis angka yang memetakan satu set nilai bernama kepada pemalar integer. Aspek enum yang menarik ialah keupayaan mereka untuk menerima sebarang nilai integer, termasuk nilai yang berada di luar julat yang ditentukan.
Apabila anda menghadapi enum seperti:
enum Beer { Bud = 10, Stella = 20, Unknown }
Anda mungkin menjangkakan bahawa penghantaran integer yang bukan 10, 20, atau Tidak Diketahui jenis Bir akan memberikan pengecualian. Walau bagaimanapun, ini tidak berlaku. Menghantar integer tidak sah kepada jenis Beer menghasilkan penetapan nilai integer itu kepada pembolehubah enum.
Pertimbangkan kod berikut:
int i = 50; var b = (Beer) i; Console.WriteLine(b.ToString());
Apabila anda menjalankan kod ini, ia mengeluarkan " 50" ke konsol. Pembolehubah b diberikan nilai integer 50, yang bukan nilai enum yang sah untuk Bir. Walau bagaimanapun, pelakon tidak memberikan pengecualian.
Tingkah laku ini berpunca daripada keputusan reka bentuk yang dibuat oleh pencipta Rangka Kerja .NET. Enum disokong oleh jenis nilai lain, seperti int, pendek atau bait. Akibatnya, mereka boleh menerima sebarang nilai yang sah untuk jenis nilai asas tersebut.
Walaupun tingkah laku ini boleh menjadi mudah dalam sesetengah senario, ia juga boleh membawa kepada hasil yang tidak dijangka jika anda tidak menyedarinya.
Melangkaui Gelagat Lalai
Untuk situasi di mana anda memerlukan lebih banyak penguatkuasaan ketat nilai enum, terdapat utiliti dan sambungan yang boleh anda gunakan untuk mengesahkan dan menguatkuasakan penggunaan nilai enum yang ditentukan sahaja. Alat ini boleh membantu anda mengelakkan kemungkinan ralat dan memastikan pembolehubah enum anda hanya memegang nilai yang dimaksudkan.
Atas ialah kandungan terperinci Mengapa Menghantar Integer Tidak Sah ke Enum dalam C# Tidak Membuang Pengecualian?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!