Rumah >pembangunan bahagian belakang >C++ >Mengapa C# Enums Boleh Mempunyai Nilai Integer Bukan Unik, dan Bilakah Saya Harus Mengelak Ini?
Nilai Enum Bukan Unik
Soalan:
Mengapa C# membenarkan berbilang nilai enum untuk diberikan nilai integer asas yang sama? Adakah selamat untuk menggunakan enum untuk tujuan ini, atau patutkah struct digunakan sebaliknya?
Jawapan:
Bertentangan dengan kepercayaan popular, enum dalam C# bukanlah sesuatu yang istimewa jenis tetapi struct yang berasal daripada System.Enum. Apabila anda mengisytiharkan enum, pengkompil menghasilkan struct dengan pemalar bernama untuk nilai enum.
Takrifan enum anda:
public enum Color { Red = 1, Blue = 1, Green = 1 }
Diterjemahkan kepada:
public struct Color : System.Enum { public const int Red = 1; public const int Blue = 1; public const int Green = 1; }
Oleh kerana struct boleh mempunyai berbilang pemalar dengan nilai yang sama, adalah mungkin untuk menentukan enum dengan nilai bukan unik. Walau bagaimanapun, ini boleh menyebabkan ketidakkonsistenan apabila menukar kepada enum:
Color color1 = (Color)1; // Returns Red Color color2 = (Color)Enum.Parse(typeof(Color), "1"); // Also returns Red
Perbandingan Warna.Merah == Warna.Hijau juga akan menilai kepada benar, yang boleh mengelirukan.
Sementara itu adalah sah untuk menggunakan enum dengan nilai bukan unik, adalah disyorkan untuk menggunakannya hanya apabila ia masuk akal. Jika anda memerlukan nilai unik, pertimbangkan untuk menggunakan struct atau Kamus
Atas ialah kandungan terperinci Mengapa C# Enums Boleh Mempunyai Nilai Integer Bukan Unik, dan Bilakah Saya Harus Mengelak Ini?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!