Rumah > pembangunan bahagian belakang > C++ > Mengapa C# Membenarkan Nilai Enum Bukan Unik, dan Patutkah Saya Menggunakan Struct Sebaliknya?

Mengapa C# Membenarkan Nilai Enum Bukan Unik, dan Patutkah Saya Menggunakan Struct Sebaliknya?

Patricia Arquette
Lepaskan: 2024-12-30 17:56:09
asal
170 orang telah melayarinya

Why Does C# Allow Non-Unique Enum Values, and Should I Use a Struct Instead?

Nilai Enum Bukan Unik

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

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

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:

  1. Nilai Bukan Unik: Apabila menukar kepada enum dengan nilai bukan unik, nilai pertama yang diberikan kepada enum adalah yang dikembalikan. Ini mungkin tidak sejajar dengan nilai yang dimaksudkan.
  2. Perbandingan Kesaksamaan: Membandingkan nilai enum bukan unik boleh mengakibatkan hasil yang tidak dijangka. Menggunakan contoh dalam soalan, kedua-dua Merah dan Hijau mewakili nilai 1, jadi membandingkan Merah dengan Hijau akan kembali benar walaupun terdapat perbezaan yang wujud.

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!

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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan