Soalan:
Dalam C#, mengapa pengkompil membenarkan berbilang enum diberikan kepada nilai yang sama? Adakah dinasihatkan untuk menggunakan struct sebaliknya dalam kes sedemikian?
Jawapan:
Enum dalam C# pada asasnya ialah struct yang mewarisi daripada kelas asas System.Enum. Di sebalik tabir, nilai enum ditakrifkan sebagai pemalar dalam struct. Sebagai contoh, definisi enum berikut:
public enum Color { Red = 1, Blue = 1, Green = 1 }
Adalah bersamaan dengan kod C# pseudo berikut:
public struct Color : System.Enum { public const int Red = 1; public const int Blue = 1; public const int Green = 1; }
Memandangkan tiada isu dengan jenis yang mengandungi berbilang pemalar dengan nilai yang sama , mentakrifkan enum dengan nilai bukan unik adalah dibenarkan. Walau bagaimanapun, ia disertakan dengan beberapa kaveat:
Walaupun secara teknikalnya sah untuk menggunakan nilai enum bukan unik , ia secara amnya tidak digalakkan. Sebaliknya, pertimbangkan untuk menggunakan struct, yang membolehkan anda menentukan ahli eksplisit dengan nilai unik. Walau bagaimanapun, struct mungkin mempunyai overhed memori yang lebih tinggi berbanding dengan enum, jadi gunakannya dengan bijak berdasarkan keperluan anda.
Atas ialah kandungan terperinci Mengapa C# Membenarkan Nilai Enum Bukan Unik, dan Patutkah Saya Menggunakan Struct Sebaliknya?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!