Rumah > pembangunan bahagian belakang > C++ > Mengapa Menghantar Integer Tidak Sah ke Enum dalam C# Tidak Membuang Pengecualian?

Mengapa Menghantar Integer Tidak Sah ke Enum dalam C# Tidak Membuang Pengecualian?

DDD
Lepaskan: 2025-01-03 01:10:39
asal
433 orang telah melayarinya

Why Doesn't Casting an Invalid Integer to an Enum in C# Throw an Exception?

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
}
Salin selepas log masuk

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());
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan