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
Patricia Arquetteasal
2024-12-30 17:56:09185semak imbas

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
}

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:

  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!

Kenyataan:
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